我建議你去探索ngRoute的'resolve'
屬性(如果你使用的是ngRoute)或UI路由器狀態: - 當使用$routeProvider
: -
$routeProvider
.when("/news", {
templateUrl: "newsView.html",
controller: "newsController",
resolve: {
message: function(messageService){
return messageService.getMessage();
}
}
})
或者,如果你是使用UI Router: -
$stateProvider.state('root',{
abstract:true, // this is abstract statte, controller is in child states.
templateUrl:'/assets/root-module/partial/main/main.html',
resolve : {
securityContext : function($http){
return $http.get("/security/context");
},
token : function(securityService,securityContext){
securityService.setToken(securityContext.data.token);
console.debug(securityContext.data.token);
return securityContext.data.token;
}
}
});
在任一方案的,只是確保你不要在你的HTML模板提供「NG控制器」。相反,如上例所示,在定義路線時提供控制器。
屬性被「解決」 - 如果它們是承諾,那麼控制器(因此視圖)將不會被初始化,直到承諾解決。
我強烈建議你去探索UI Router狀態層次結構的方法,它可以讓你分享'已解決;證明孩子的狀態。
如果您的應用程序中有一個ui路由器,那麼使用它的「解析」功能是一種方法:http://stackoverflow.com/a/18019915/533711 – ischenkodv