寻求最佳实践方面的帮助。
我有一个模块,我正在设置一些自定义标头。没什么大不了的:
$httpProvider.defaults.headers.common['token'] = function() {
return token;
};
token
是我在页面加载时必须$http.get()
的值。
我的初衷是将它放在我的控制器中,但在考虑之后,在我正在设置自定义标题的页面加载模块配置中更有意义:
var app = angular.module('app',['ngRoute', 'ngResource'],function($httpProvider) {
// Custom headers
});
我的问题是两部分:
$http.get()
请求?答案 0 :(得分:1)
如果是正确的方法,则更难回答,因为它取决于确切的用例。由于$ http-calls是异步的,你不能只在应用程序启动时调用你的后端,并确保你的控制器或服务中存在令牌,http调用可能还没有返回!如果您希望立即使用该令牌,这可能会给您带来麻烦。
同样取决于用例的更好选择可能是在需要令牌的任何路由上使用resolve-function。在路由解析功能完成之前,路由将在加载任何控制器和模板时保持不变。使用此方法,您可以100%确定控制器运行后令牌是否存在。
This video has a good intro to resolves.
他们也可以合并。在app.run中运行http-call,然后使用resolve函数确保它在控制器加载之前存在。