我有一个从服务中获得的数组,但是在控制器中,我在forEach()
函数中获得一个空值。这是代码。
控制器
在这里,"产品"one_answers"复制产品"都是空的。我需要将"复合生产"数组与forEach()
函数一起工作。
app.controller("controllerApp", function($scope, serviceApp){
var products = serviceApp.query();
$scope.copyProducts = products;
angular.forEach($scope.copyProducts, function(value, key){
console.log("object: "+value);
})
});
服务
app.factory("serviceApp", function($resource){
return $resource("products.json", {}, {
getAll: {
method: "GET",
isArray: true
}
})
})
您的代码是错误的,因为 .query()
是异步的,因此它不会立即完成,并且结果尚未同步在下一行上准备。因此,它需要一个回调函数才能触发它的工作。
serviceApp.query().$promise.then(function(res) {
$scope.products = res;
$scope.copyProducts = res;
angular.forEach($scope.copyProducts, function(item) {
console.log(item)
})
});
替代:
serviceApp.query({}, function(res, headers){
//etc
});
顺便说一句,如果要使用资源中定义的 getAll
方法,那么您将使用query()
serviceApp.getAll().$promise.then(function(res){}).....etc