我为 Controller 实现了这段代码
.controller('tableCtrl', function($scope, $filter, $sce, ngTableParams, tableListUser) {
var data = [];
tableListUser.getAll()
.then(function(data) {
console.log("THEN DATA : ", data);
$scope.data = data;
});
data = $scope.data;
console.log("DATA : ", data);
// Full Params Sort, Filter, Edit
this.tableFull = new ngTableParams({
page: 1, // show first page
count: 10, // count per page
sorting: {
name: 'asc' // initial sorting
}
}, {
total: data.length, // length of data
getData: function ($defer, params) {
console.log("Data tableFull :", $scope.data);
// use build-in angular filter
var orderedData = params.sorting() ? $filter('orderBy')($scope.data, params.orderBy()) : $scope.data;
orderedData = params.filter() ? $filter('filter')(orderedData, params.filter()) : orderedData;
orderedData = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
console.log(orderedData.length);
params.total(data.length); // set total for recalc pagination
$defer.resolve(orderedData);
}
})
}
这是服务
.service('tableListUser', function($http, SessionService, AccessLevels) {
return {
getAll: function() {
console.log('Service tableListUser');
var token = SessionService.get('token');
console.log(token);
$http.defaults.headers.common.Authorization = 'Bearer ' + token;
var url = 'http://api-ec.local/users';
var promise = $http.get(url);
return promise.then(function(result) {
console.log("RESULT : ", result);
return result.data.data;
});
}
};
})
我在这里评论了很多帖子:asynchronously populating an AngularJS ngTable with json data
但是我不能使用 var data
中的数据,因为它是 Undefined
。 promise 的响应很好,并获得了应用程序期望的数据,因为当我在 tableListUser.getAll().then
中记录数据时,它很好。我使用 $socope.data
传递数据并在 ngTableParams
中使用它的方式有问题吗?这阻碍了我很多。
在此先感谢您的帮助。
最佳答案
我猜你没有使用 controllerAs 语法。如果是这种情况,只需将 this.tableFull 更改为 $scope.tableFull 就可以解决问题。您的代码与我执行此操作的旧应用程序几乎相同,这是唯一不特定于域的区别。
关于javascript - 如何在 promise 响应后为 ngTableParams 使用数据 - Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922552/