【问题标题】:How to get different controllers to use different configurations of $httpProvider in AngularJS?如何让不同的控制器在 AngularJS 中使用不同的 $httpProvider 配置?
【发布时间】:2014-07-09 16:03:09
【问题描述】:

我有一个 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 可以在单个控制器中配置吗?

【问题讨论】:

  • 我认为除了在不同的模块中声明您的控制器之外,没有其他方法。
  • 我可以在单个控制器中配置 $httpProvider 吗?
  • @ivarni:你的意思是创建另一个 app.js 并声明一个新的 angular.module?
  • @user3293156 否,但您可以覆盖默认标题。所有 Angular 服务都是单例的。

标签: javascript angularjs angularjs-controller angularjs-http


【解决方案1】:

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

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

由于服务是单例的,因此它们被一次性配置。您可以拥有多个 module.config 函数,但这无济于事。

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

【讨论】:

  • 谢谢!你为我节省了很多时间。我正要创建多个 module.config 函数。
猜你喜欢
  • 2013-05-31
  • 2013-09-13
  • 2018-09-27
  • 1970-01-01
  • 2017-01-09
  • 2017-09-12
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多