Arrays AngularJS ForEach针对REST/JSON调用($resource)在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();

我试图通过控制器对资源运行foreach,以便输出JSON数组中的每个项(稍后我将添加条件),但返回为“未定义”:

}]))

但是,如果我按如下方式创建静态数组,它将按预期工作:

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;
    });
}]);