我做的(我認爲是,但也許不是)一個簡單的angular.forEach
一個數組,然後使用$resource
使基於返回的每個值調用。每次調用的結果都是一個對象,就像我期待的那樣。但是,我無法讓這些物體以angular.forEach documentation演示的方式和諧相處。
但首先,一些代碼工作,然後看看失敗的代碼。
作品:
var uniqueIds = {};
angular.forEach(object, function(key, value){
this.push(key.uniqueIds);
}, uniqueIds);
console.log(uniqueIds)
// uniqueIds equals the expected array
失敗
這就是事情變得棘手。現在,在下一個示例中,在angular.forEach
內部調用$resource
。
angular.forEach(array, function(index){
Resource.query({id:index}, function(result){
console.log(result)
// returns the expected object,
// but, as expected, I can't access the object outside the async call
});
console.log(result);
// result is undefined
});
鑑於異步性,似乎承諾可以解決問題。但它並不是 - 我仍然在異步調用中。也不會將result
分配到$scope
工作。總之,我似乎無法獲得Resource.query
以外的價值。
我需要什麼發生?
我需要每個$resource
調用返回的對象加起來一個對象(使用angular.extend?我已經試過了)以同樣的方式在angular.forEach
創建的陣列。我已經嘗試了許多不同的方法,大多數都基於這裏提出的一般異步問題的答案,但目前爲止無濟於事。我認爲這是一個與從$resource
調用中獲得價值的問題,但在這種情況下如何做到這一點我有點困惑。
我被多麼優雅和簡單的這一解決方案是地板很好的例子。正是我需要的。 –
這就是你的AngularJS,@jodytate :) – finishingmove
當你簡單地使用Array.map將每個元素(或索引)映射到一個promise數組時,使用'foreach'來構建一個數組似乎是多餘的,然後你可以傳遞給' $ q.all' –