听起来像是$scope.ServiceResult
返回承诺forEach
,实际上你在运行之前获得了数据。另一个问题应该是该query()
方法根本不返回任何内容。
所以我们将尝试这两种选择:
如果$resource('/CIS/webresources/service/')
是异步的:
尝试更改您的工厂和调用方法,例如:
CIS.factory('Services', ['$resource','$q', function($resource, $q) {
var data = $resource('/CIS/webresources/service/');
var factory = {
query: function () {
var deferred = $q.defer();
deferred.resolve(data);
return deferred.promise;
}
}
return factory;
}]);
并在控制器中调用它:
Services.query() // query() returns promise
.then(function (result) {
angular.forEach(result, function(eachService) {
console.log(eachService.id);
});
}, function (result) {
alert("Error: No data returned");
});
Promise代表一个未来值,通常是异步操作的未来结果,并允许我们定义一旦该值可用或发生错误时会发生什么。
Fiddle这是可以帮助您的Demo
如果$resource('/CIS/webresources/service/')
不是异步的:
CIS.factory('Services', ['$resource','$q', function($resource, $q) {
var data = $resource('/CIS/webresources/service/');
var factory = {
query: function () {
return data;
}
}
return factory;
}]);
和控制器(像你的):
$scope.ServiceResult = Services.query();
$scope.getIds = function() {
angular.forEach($scope.ServiceResult, function(eachService) {
console.log(eachService.id);
});
};
相关示例:Fiddle