父模块上运行的块是否会在子模块中的代码之前运行?

时间:2016-07-01 18:33:42

标签: javascript angularjs http

考虑像这样的角度应用程序(写在我的手机上,抱歉有奇怪的语法):

angular.module('app1').controller(ctrl1, function($http){
    $http.get(...);
});

angular.module('app2', ['app1']).run(function($http){
    $http.default.headers.common.foo = 'bar';
});

运行块是否保证在控制器代码之前运行?换句话说,如果我通过调用app2加载我的页面,是否可以保证所有HTTP调用都具有默认标头?

1 个答案:

答案 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');
});