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()
的调用是异步的。您需要在查询的解析处理程序中指定如何处理文章。
我正在尝试通过控制器 运行 对资源进行 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()
的调用是异步的。您需要在查询的解析处理程序中指定如何处理文章。