2015-06-08 36 views
0

已经创建了角,还在学习和发现......初始化应用程序等待REST调用数据导致

我需要创建一个角度应用程序,它依赖于应用程序中使用的各种参数的一些基本的Web应用程序。例如,我们将通过REST检索各种标签字符串...这些标签用于应用程序的每个屏幕上,包括启动时显示的第一个屏幕...

我正在寻找一个“适当的'/'好'/'有角'的方式来初始化应用程序,等待一种'init-application'rest-call的结果 - 由于这个rest调用的结果包含应用程序从启动上,我发现下面的实例方法...

https://blog.mariusschulz.com/2014/10/22/asynchronously-bootstrapping-angularjs-applications-with-server-side-data

是否有更多的想法/想法/有用的链接... 谢谢!

+0

如果您的应用程序中有一个ui路由器,那么使用它的“解析”功能是一种方法:http://stackoverflow.com/a/18019915/533711 – ischenkodv

回答

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控制器”。相反,如上例所示,在定义路线时提供控制器。

属性被“解决” - 如果它们是承诺,那么控制器(因此视图)将不会被初始化,直到承诺解决。

我强烈建议你去探索UI Router状态层次结构的方法,它可以让你分享'已解决;证明孩子的状态。