考虑像这样的角度应用程序(写在我的手机上,抱歉有奇怪的语法):
angular.module('app1').controller(ctrl1, function($http){
$http.get(...);
});
angular.module('app2', ['app1']).run(function($http){
$http.default.headers.common.foo = 'bar';
});
运行块是否保证在控制器代码之前运行?换句话说,如果我通过调用app2加载我的页面,是否可以保证所有HTTP调用都具有默认标头?
答案 0 :(得分:3)
确实,'跑步'在运行阶段,即在控制器的初始化之前,将调用块。
但是,我建议您通过$httpProvider.interceptors
在配置阶段配置默认标头:
app.factory('httpRequestInterceptor', function () {
return {
request: function (config) {
config.headers['foo'] = 'bar';
return config;
}
};
});
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpRequestInterceptor');
});