我有一个超级简单的服务返回JSON列表:
angular.module('hostService', ['ngResource']).
factory('Host', function($resource){
return $resource('/api/v1/host', {}, {
'query': {method:'GET', isArray : true},
});
});
当我称呼它:
$scope.hosts = Host.query(function(d) {
console.log(d);
});
我收到
[Resource, Resource, Resource, Resource, Resource, Resource, Resource, Resource, $promise: Object, $resolved: true]
最终胡说八道?我想迭代项目并做点什么:
$scope.hosts = Host.query(function(d) {
for(i in $scope.hosts) {
doSomething($scope.hosts[i]);
}
});
,但现在必须检查它们不是"承诺"或"解决"。
您正在尝试通过请求中的参数通过该函数。" $ Resource"返回一个承诺,当您从服务器返回结果时,您可以使用结果进行迭代:
您需要注入$log
才能使下面的代码
Host.query().$promise.then(
//success
function(results) {
$scope.hosts = results;
results.forEach(results, function(val,key) { $log.info(key + ' : ' + val); });
},
//error
function(err) {
$log.error(err);
}
);