我需要在任何应用程序加载之前执行$ http请求,因此没有UI,控制器,服务等。
请求的目的是根据标头中是否存在命名cookie来检查用户是否在服务器上有有效会话。
因此,使用promise我可以处理响应,如果不是有效会话,或者不存在,则将用户重定向到我的登录页面。
所以我的问题是,初始会话检查请求应该在哪里,我最初的想法是在设置应用程序模块时使用运行块。
这是否有意义,还是应采取不同的方法?
答案 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!");
});