8
考慮代碼:
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個調用爲它們依賴於父調用返回的數據。
我想做什麼:當所有的人都完成了而不僅僅是父母的呼叫時,返回解析器。
我不能使用$ q.all(),因爲其中2個調用依賴於第一次調用。
簡而言之,myAppController只有在所有3個調用完成後才能加載。
嗨阿賈伊!感謝您的即時回覆。但是,如果我使用鏈接,您是否認爲我可以將第一次調用返回的數據傳遞給後續調用? – AlwaysALearner
是每個函數裏面的數據都是從前面返回的數據 –
鏈接並不適合我的需要。我去了嵌套呼叫。但$ q確實幫助我解決了這個問題。謝謝。投票了! :) – AlwaysALearner