Arrays AngularJS ForEach针对REST/JSON调用($resource)在JSON准备就绪之前是否未定义/正在运行?
我试图通过控制器对资源运行foreach,以便输出JSON数组中的每个项(稍后我将添加条件),但返回为“未定义”: }])) 但是,如果我按如下方式创建静态数组,它将按预期工作:Arrays AngularJS ForEach针对REST/JSON调用($resource)在JSON准备就绪之前是否未定义/正在运行?,arrays,json,angularjs,Arrays,Json,Angularjs,我试图通过控制器对资源运行foreach,以便输出JSON数组中的每个项(稍后我将添加条件),但返回为“未定义”: }])) 但是,如果我按如下方式创建静态数组,它将按预期工作: pfcControllers.controller('pfcArticlesCtrl', ['$scope', '$log', 'pfcArticles', function ($scope, $log, pfcArticles) { $scope.articlecount = pfcArticles.query();
pfcControllers.controller('pfcArticlesCtrl', ['$scope', '$log', 'pfcArticles', function ($scope, $log, pfcArticles) {
$scope.articlecount = pfcArticles.query();
articlz = [{ title: 'art1', id: 1}]
var val = [];
// Look over categories
angular.forEach(articlz, function (value, key) {
this.push(value);
}, val);
console.log(val);
$scope.temp = val;
}]);
这是我的资源:
pfcServices.factory('pfcArticles', ['$resource', function ($resource) {
return $resource('https://myrestcall.net/tables/articles', {},
{
'update': { method: 'PATCH' }
}
);
}]);
我认为正在发生的是,我的foreach是在返回JSON之前执行的,因为它很可能是异步的。如何让它等待我的JSON准备好循环?您正在寻找以下内容:
pfcControllers.controller('pfcArticlesCtrl', ['$scope', '$log', 'pfcArticles', function ($scope, $log, pfcArticles) {
var articles = pfcArticles.query(function() {
$scope.articlecount = articles.length;
var val = [];
angular.forEach(articles, function (value, key) {
this.push(value);
}, val);
$scope.temp = val;
});
}]);
记录
未定义的的原因是对query()
的调用是异步的。您需要指定如何处理查询的解析处理程序中的项目。非常有效!非常感谢。
pfcControllers.controller('pfcArticlesCtrl', ['$scope', '$log', 'pfcArticles', function ($scope, $log, pfcArticles) {
var articles = pfcArticles.query(function() {
$scope.articlecount = articles.length;
var val = [];
angular.forEach(articles, function (value, key) {
this.push(value);
}, val);
$scope.temp = val;
});
}]);