【问题标题】:Init application waiting for REST call data result初始化应用程序等待 REST 调用数据结果
【发布时间】:2015-06-08 10:27:20
【问题描述】:

已经用 Angular 创建了一些基本的 Web 应用程序,还在学习和发现中......

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

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

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

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

【问题讨论】:

标签: angularjs


【解决方案1】:

我建议您探索 ngRoute 的 'resolve' 属性(如果您使用的是 ngRoute)或 UI-router 状态:-

使用$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”即可。而是在定义您的路线|状态时提供控制器,如上面的示例所示。

正在“解析”的属性 - 如果它们是 Promise,控制器(因此是视图)在 Promise 被解析之前不会被初始化。

我强烈建议您探索UI Router 允许您共享“已解决”的状态层次结构方法;子状态的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 2020-03-02
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多