我有一个返回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]);
}
});
但现在必须检查它们不是“承诺”或“已解决”。
答案 0 :(得分:-1)
您正在尝试将该函数作为请求中的参数传递。 '$ resource'返回一个promise,您可以使用它从服务器返回结果时迭代结果:
您需要注入$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);
}
);