2014-05-09 156 views
1

我想打我的控制器之前解決一個承諾陣列things解決與角UI路由器一個承諾陣列

resolve:{ 
    things: function($q){ 
    var promises = []; 
    var titles = []; 
    var thingRef = ['a1', 'a2', 'a3']; 
    angular.forEach(thingRefs, function(thingRef){ 
     promises.push($firebase(ref.child('things').child(thingRef).child('title')).then(function(title){ 
     titles.push(title); 
     })); 
    }); 

    $q.all(promises).then(function(){ 
     return titles; 
    }); 
    } 
}, 

什麼我錯在這裏做什麼?

回答

3

我想你需要:

return $q.all(promises).then(function(){ 
    return titles; 
}); 

因爲沒有這種外部收益內部回報率並不去任何地方。

現在resolve.things返回一個承諾,當解析時,將包含一個標題數組。


與其他一些調整:

resolve:{ 
    things: function($q){ 
    var promises = []; 
    var thingRef = ['a1', 'a2', 'a3']; 
    angular.forEach(thingRefs, function(thingRef){ 
     promises.push($firebase(ref.child('things').child(thingRef).child('title'))); 
    }); 

    return $q.all(promises); 
    } 
} 
+0

我想,實際上,仍然沒有骰子。 –

+0

我做了一些額外的調整。如果這不起作用,你能告訴我承諾的輸出和'$ firebase(ref.child('things')。child(thingRef).child('title'))''的結果。 – Halcyon

+0

我被完全推遲了。我忘了注入'ref'。謝謝你的幫助! --- btw你確實需要'$ q.all()'' –