2014-05-09 2 views
1

Я пытаюсь решить массив обещает things до удара моего контроллера:Resolve массива посыла с угловым UI Router

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». Спасибо за вашу помощь! --- Кстати, вам нужно 'return' перед' $ q.all() ' –

Смежные вопросы