AngularJS:作为配置的一部分执行$ http

时间:2015-01-30 14:26:28

标签: angularjs

我需要在任何应用程序加载之前执行$ http请求,因此没有UI,控制器,服务等。

请求的目的是根据标头中是否存在命名cookie来检查用户是否在服务器上有有效会话。

因此,使用promise我可以处理响应,如果不是有效会话,或者不存在,则将用户重定向到我的登录页面。

所以我的问题是,初始会话检查请求应该在哪里,我最初的想法是在设置应用程序模块时使用运行块。

这是否有意义,还是应采取不同的方法?

1 个答案:

答案 0 :(得分:1)

在运行配置中执行此操作时出现问题,您无法暂停应用程序的初始化。这意味着,将加载第一个页面并初始化依赖项(控制器,服务)。如果要在所有内容初始化之前执行此检查,则必须在angular bootstraps之前执行请求。

如果从html元素中删除ng-app并在index.html末尾加载一个脚本,则可以手动引导Angular:

 angular.bootstrap(document, ["myAppModule"]);

您还可以在引导角度之前发出$ http请求。在你的情况下,这将是这样的:

    var initInjector = angular.injector(["ng"]);
    var $http = initInjector.get("$http");

    return $http.get("config.json").then(function (response) {
        //this is to load the config to a constant
        angular.module("myAppModule").constant("config", response.data); 
        angular.bootstrap(document, ["myAppModule"]);
    }, function (errorResponse) {
        console.error("config not found!");
    });