Init应用程序等待REST调用数据结果

时间:2015-06-08 10:27:21

标签: angularjs

使用Angular创建了一些基本的Web应用程序,仍在学习和发现......

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

我正在寻找一种'正确'/'好'/'有角度'的方式来初始化应用程序,等待某种'init-application'休息调用的结果 - 由于这个结果这个休息调用包含应用程序从一开始就需要的数据,我在下面找到了一个示例方法...

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

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

1 个答案:

答案 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状态层次结构方法,以便您分享'已解决;对孩子们的态度。