[英]Prevent previous, yet longer-running $http request from returning after most recent request
[英]Prevent controller from running before HTTP request is fulfilled?
$rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){
if ($rootScope.carNameMap) {
_import.stateEvent.changeTitle(toState, toParams, event);
} else {
_import.getCompanies.init().then(function(res){ //<-- promise
_import.stateEvent.changeTitle(toState, toParams, event);
});
}
});
如您所見,在我的$stateChangeStart
我檢查是否已經創建了carNameMap
,如果不是,則運行一個發送HTTP請求並返回carNameMap
的服務。
但是,當我有一個遠程數據庫時,我的控制器會在http request
結束之前運行。
如何防止控制器在HTTP請求完成之前運行?
您應該在config塊中檢查angularJs在$ routeProvider中提供的解析功能:
app.config(function ($routeProvider) {
$routeProvider
.when('/',
{
templateUrl: "app.html",
controller: "AppCtrl"
resolve: {
foo: function ($q) {
//your logic goes here, and then your controller will receive an "foo" parameter.
}
}
}
)
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.