错误:[$injector:unpr] 未知的提供者:ngTableParamsProvider <- ngTableParams。

15
我正在尝试使用 ng-table,并在许多地方尝试添加它,但所有情况都出现错误。
当我在 app.js 中添加 ngTable 时,它会报错:

Error: [$injector:unpr] Unknown provider: ngTableParamsProvider <- ngTableParams

当我在控制器中添加 ngTable 时,它会显示 undefined 不是控制器的函数。
我该如何解决这个问题?

你能创建一个 Plunker 吗?我猜测你没有像这样将 ngTable 注入到你的模块中 http://bazalt-cms.com/ng-table/example/1。 - Ronald91
4个回答

23

导致此错误的另一个原因是在版本1.0.0中将ngTableParams重命名为NgTableParams。因此,如果您正在使用版本1.0.0,则代码应如下所示:

customModule.factory("customTable", function (NgTableParams) {

    function setupNgTable() {
        var parameters = {
            count: 10
        };

        var settings = {
            getData: function (params) {

            }
        };

        return new NgTableParams(parameters, settings);
    }
}

15

你需要:

  1. 在你的 index.html 文件中添加 <script src="....ng-table.js"></script> 的引用(更可能是这样)
  2. 将 ngTable 注入到你的 Angular 模块中,例如:

    var myApp = angular.module('myApp',['ngTable']);

  3. 在控制器中:

    myApp.controller('someCtrl', function($scope, ngTableParams) {....});


注意:保留了原文中的 HTML 标签。

1
我也做了同样的事情,但控制器却报错:undefined不是一个函数。 - Prateek
你能发布你的控制器代码或者创建一个 plnkr 吗? - sylwester
我也尝试了,但控制器仍然出现“未定义的函数”错误。我正在创建plnkr,很快就会发布。 - Prateek
嗨,99%的步骤2。请仔细检查,我刚刚遇到了和你一样的错误,当我从数组中删除ngTable时。 - sylwester
感谢@sylwester。实际上我正在使用多个控制器,在所有控制器中,我都在使用angular.module('myApp',['ngTable']).controller('ctrl',...)。所以后来像你在第二步中说的那样在父级中定义angular应用程序可以解决问题。 - Prateek

12

看起来 ngTableParams 已经被更改为以 "N" 开头的 NgTableParams,而不是 'n'。

因此,现在代码将类似于这样...

首先,在你的 HTML 代码中添加 ng-table.jsng-table.min.js 链接。

然后在你的 app.js 或 script 部分做如下操作...

var app = angular.module('XXX', ['ngTable']);

app.controller('XXXXX', function($scope, NgTableParams){

//-Inside wherever your using ngTableParams change it to NgTableParams

................

});

希望这可以帮助。


为了使您的答案更易读,请使用4个空格进行代码缩进。 ;) - sidneydobber
感谢 @sidneydobber - Sourav Sinha

4

要使用ngTable模块,您需要按照http://ng-table.com中的步骤进行操作。

请注意,NgTableParams注入时要使用大写字母N


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接