在getPagerLabel方法中我为$ scope.users.length定义了未定义,这是代码
angular.module('myAppServices', ['ngResource'])
.factory('Users', function($resource) {
return $resource('/MY/system/users/grid');
});
function UsersCtrl($scope, Users) {
$scope.pagerLabel = 'Showing 1 - 10 of 100';
$scope.users = Users.get();
getPagerLabel();
function getPagerLabel() {
...
var total = $scope.users.length;
...
//$scope.pagerLabel = 'Showing ' + start + ' - ' + end + ' of ' + total;
}
Users.get()像这样返回json数据
{"page":"1","total":"1","records":"3","rows":[{"loginId":1,"fullName":"Test User"},{"loginId":2,"fullName":"Some"}, {"loginId":3,"fullName":"TesterM"}],"expired":false}
答案 0 :(得分:0)
这可能是因为Users.get()返回一个对象,而不是一个数组。您可以使用$scope.users.records
或$scope.users.rows.length
更新:如果以上操作无效,那么您可能会异常地获取导致问题的数据。您可以尝试使用$ q服务来创建承诺。 promise是一个可以按预期使用的对象,但是当异步调用返回时,实际数据将被填充。用它最简单的形式:
function getData(){
var deferred = $q.defer();
// async call, resolved after ajax request completes
return deferred.promise;
};
getData().then(someOtherFunction);
//Angular also "understands" that it's a promise if you use it in a template like so
$scope.data = getData();
你可能想像其他人一样使用.then()。 您可以在此处阅读更多内容:http://liamkaufman.com/blog/2013/09/09/using-angularjs-promises/
答案 1 :(得分:0)
好的,这解决了问题
Users.get($scope.grid).$promise.then(function(result) {
$scope.users = result;
getPagerLabel();
}, function(reason) {
});