使用Angular创建了一些基本的Web应用程序,仍在学习和发现......
我需要创建一个Angular应用程序,它依赖于应用程序中使用的各种参数。例如,我们将通过REST检索各种标签字符串...这些标签用于应用程序的每个屏幕,包括启动时显示的第一个屏幕......
我正在寻找一种'正确'/'好'/'有角度'的方式来初始化应用程序,等待某种'init-application'休息调用的结果 - 由于这个结果这个休息调用包含应用程序从一开始就需要的数据,我在下面找到了一个示例方法...
还有更多的想法/想法/有用的链接...... 谢谢!
答案 0 :(得分:2)
我建议您探索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-controller”。而是在定义您的路径状态时提供控制器,如上例所示。
属性被“解析” - 如果它们是promises,控制器(因此视图)将不会被初始化,直到promise得到解决。
我强烈建议您探索UI Router状态层次结构方法,以便您分享'已解决;对孩子们的态度。