【发布时间】:2016-08-10 02:32:12
【问题描述】:
我正在尝试实现 ngTable 以显示来自休息调用的 json。在我的工厂js中,我定义了http get请求获取本例所有记录的方法。
ristoreApp.factory("fmFactory", ['$http', '$window',
function ($http, $window) {
var service = {};
service.getAll = function () {
var url = SERVER + "/ristore/foundation/";
return $http({
headers: {'Authorization': 'Bearer ' + $window.localStorage.getItem("access_token")},
url: url,
method: 'GET',
crossOrigin: true
})
}
return service;
}]);
ngTable 在我的控制器 js 中设置
ristoreApp.controller("fmCtrl",
['$scope', 'fmFactory', 'NgTableParams', function($scope, fmFactory, NgTableParams) {
$scope.selection = '0';
$scope.reports = [];
$scope.fmSearch = function () {
if ($scope.selection == '0') {
fmFactory.getAll().success(function (data) {
$scope.reports = data;
$scope.tableParams = new NgTableParams({
page: 1, // show first page
count: 10 // count per page
}, {
total: $scope.reports.length, // length of data
getData: function ($defer, params) {
$defer.resolve($scope.reports.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
})
}
}
}]
)
没什么特别的,只是简单的分页,每页 10 条记录。但是,$defer.resolve() 中的方法 params.page() 出现错误 TypeError: Cannot read property 'page' of undefined。这很奇怪。显然“页面”是在NgTableParams 的参数部分中定义的。为什么它抱怨它没有定义?
编辑:
根据 Sergii 的回答中的 link,我删除了 $defer 并将我的控制器 js 更改为以下内容:
ristoreApp.controller("fmCtrl",
['$scope', 'fmFactory', 'NgTableParams', function($scope, fmFactory, NgTableParams) {
$scope.selection = '0';
$scope.reports = [];
$scope.fmSearch = function () {
if ($scope.selection == '0') {
$scope.tableParams = new NgTableParams({
page: 1, // show first page
count: 10 // count per page
}, {
getData: function (params) {
return fmFactory.getAll().then(function(data) {
params.total(data.inlineCount);
return data;
});
}
});
}
}
}]
)
然而,除了一堆行,什么都没有显示。 http 调用 url 已经过测试,并使用 rest api 测试器返回正确的承诺。
【问题讨论】:
-
这种方式已弃用
getData: function ($defer, params)- 它只是为了向后兼容,直接返回数据/承诺...... -
你可以删除 $defer 并只接收参数,看看是否能解决问题...另一个问题是确保你正确注入
NgTableParams并检查它是否未定义 -
我也有类似的问题。我还想添加一个重要的细节。我的错误是相同的,但在调试模式下我看到 params is undefined 并且无法从未定义的参数页面获取。 @ddd 如果您比我更快地找到解决方案,请在此处添加答案。
-
问题结束了吗?你还有问题吗?是相同的问题还是不同的问题?
标签: javascript angularjs pagination ngtable