如何让不同的控制器在AngularJS中使用$ httpProvider的不同配置?

时间:2014-05-21 06:52:19

标签: javascript angularjs angularjs-controller angularjs-http

我有一个AngularJS项目,使用angular-seed的目录布局。 https://github.com/angular/angular-seed

app.js包含我的http提供程序的配置。我的所有控制器都必须在app.js中使用相同的http提供程序配置。

在app.js中,

angular.module('myApp', [
  'ngRoute',
  'myApp.filters',
  'myApp.services',
  'myApp.directives',  
  'myApp.controllers',
]).
config(['$httpProvider', function($httpProvider)
{
    if (!$httpProvider.defaults.headers.get) {
        $httpProvider.defaults.headers.get = {};    
    }

    //disable IE ajax request caching
    $httpProvider.defaults.headers.get['If-Modified-Since'] = '0'; 
}

我有一个控制器XXXCtrl,当app.js如上所述。我有另一个控制器YYYCtrl,除非我在config(['$httpProvider', function($httpProvider)内注释掉代码,否则它不起作用。

所以,我的问题是这个。如何让不同的控制器在AngularJS中使用$ httpProvider的不同配置?可以在单个控制器内配置$ httpProvider吗?

1 个答案:

答案 0 :(得分:2)

您可以为每次调用覆盖$ http标头

$http.get(url, {headers:{...}});

由于服务是单例,所以它们是一劳永逸地配置的。你可以拥有多个module.config函数,但它不会有帮助。

您还可以使用Interceptors配置http请求。