$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请求的服务,并返回一个承诺。
但是当我有一个远程数据库时,我的控制器会在http request
结束之前运行。
如何在满足HTTP请求之前阻止控制器运行?
答案 0 :(得分:0)
您应该查看angularJs在配置块中的$ routeProvider中提供的resolve functionallity:
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.
}
}
}
)
});