AngularJS 针对 REST/JSON 的 ForEach 调用($resource)是 undefined/running 在 JSON 准备好之前?

AngularJS ForEach against REST/JSON call ($resource) is undefined/running before JSON is ready?

我正在尝试通过控制器 运行 对资源进行 foreach,以便输出 JSON 数组中的每个项目(稍后我将添加条件),但它正在返回作为 "undefined":

 pfcControllers.controller('pfcArticlesCtrl', ['$scope', '$log', 'pfcArticles', function ($scope, $log, pfcArticles) {
$scope.articlecount = pfcArticles.query();

var val = [];

angular.forEach($scope.articlecount, function (value, key) {
    this.push(value);
}, val);
    console.log(val);
    $scope.temp = val;

}]);

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

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

您记录 undefined 的原因是因为对 query() 的调用是异步的。您需要在查询的解析处理程序中指定如何处理文章。