Как заставить разные контроллеры использовать разные конфигурации $httpProvider в AngularJS?

У меня есть проект AngularJS, использующий макет каталога из angular-seed. https://github.com/angular/angular-seed

app.js содержит конфигурацию моего http-провайдера. Все мои контроллеры должны использовать одну и ту же конфигурацию http-провайдера в app.js.

В приложении.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).

Итак, моя проблема заключается в следующем. Как заставить разные контроллеры использовать разные конфигурации $httpProvider в AngularJS? Можно ли настроить $httpProvider внутри отдельных контроллеров?


person user781486    schedule 21.05.2014    source источник
comment
Я не верю, что есть другой способ обойти это, кроме объявления ваших контроллеров в разных модулях.   -  person ivarni    schedule 21.05.2014
comment
Могу ли я настроить $httpProvider внутри отдельных контроллеров?   -  person user781486    schedule 21.05.2014
comment
@ivarni: Вы имеете в виду создание еще одного app.js с новым объявлением angular.module?   -  person user781486    schedule 21.05.2014
comment
@user3293156 user3293156 НЕТ, но вы можете переопределить заголовки по умолчанию. Все сервисы angular являются синглтонами.   -  person mpm    schedule 21.05.2014


Ответы (1)


Вы можете переопределить заголовки $http для каждого вызова

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

Поскольку службы являются синглтонами, они настраиваются один раз и навсегда. У вас может быть несколько функций module.config, но это не поможет.

Вы также можете использовать перехватчики для настройки HTTP-запросов.

person mpm    schedule 21.05.2014
comment
Спасибо! Вы сэкономили мне много времени. Я собирался создать несколько функций module.config. - person user781486; 21.05.2014