Возвратите взаимозависимые асинхронные обещания в $ routeProvider resol
Рассмотрим код:
var myApp = angular.module('myApp', []);
Маршруты:
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'app.html',
controller:myAppController,
resolve:{
resolveData:function(Resolver){
return Resolver();
}
}
});
});
Разрешить:
myApp.factory('Resolver', ['$http', function($http){
return function(){
return $http({url: '/someurl',method: "GET"}).then(function(data) {
// dependent call 1
$http({url: '/someotherurl',method: "GET" }).then(function(data) {
});
// dependent call 2
$http({url: '/someanotherurl',method: "GET" }).then(function(data) {
});
});
}
}]);
Выше я вложил 2 вызова в один, поскольку они зависят от данных, возвращаемых родительским вызовом.
Что я хочу сделать: вернуть Resolver, когда все они завершены, а не только родительский вызов.
Я не могу использовать $ q.all (), потому что 2 вызова зависят от первого вызова.
Короче говоря, myAppController должен быть загружен только после того, как все 3 вызова завершены.