你能帮我解决这个问题吗?如何迭代结果的元素? angular.forEach(results.first,function(value,key){// anything}也不起作用。
var AppControllers = angular.module('AppControllers', ['AppConfig']);
AppControllers.controller('WorkItemController', ['$scope', '$q', 'IStatus', 'SRStatus',
function($scope, $q, IStatus, SRStatus) {
$q.all({
first: IStatus.get(),
second: SRStatus.get()
}).then(function(results) {
console.log(results);
//return Object { first=[0], second=[0]}
console.log(results.first);
//return
//[]
//0 Resource { Displayable=true, Changeable=true, Open=true, mais...}
//1 Resource { Displayable=true, Changeable=true, Open=true, mais...}
//2 Resource { Displayable=false, Changeable=false, Open=false, mais...}
//3 Resource { Displayable=true, Changeable=false, Open=true, mais...}
//$promise Object { $$state={...}, then=function(), catch=function(), mais...}
//$resolved true
console.log(results.first.length);
//return 0
console.log(results.first[1]);
//return undefined
});
}]);
答案 0 :(得分:5)
$q.all()
致力于承诺。看起来IStatus
是$resource
,这意味着您需要使用get().$promise
$q.all()
来正常工作。目前,$q.all()
似乎正在立即解决,所以当您检查资源的价值时,它仍然是空的。
$q.all({
first: IStatus.get().$promise,
second: SRStatus.get().$promise
}).then(function(results) {
// ...
console.log(results.first); // should contain data
});