2016-11-13 3 views
0

Как я могу поместить свой перехватчик в отдельный файл и нажать его в $ httpProvider в блоке конфигурации.

Вот моя конфигурация блока на данный момент:

(function() { 
    'use strict'; 

    angular 
    .module('app') 
    .config(config); 

    config.$inject = ['$httpProvider']; 

    function config($httpProvider) { 
    $httpProvider.defaults.withCredentials = true; 
    $httpProvider.defaults.useXDomain = true; 
    $httpProvider.interceptors.push(['$injector', '$q', function($injector, $q) { 
     return { 
     responseError: function(response) { 
      var toastr = $injector.get('toastr'); 
      var lodash = $injector.get('lodash'); 
      toastr.error(lodash.get(response, 'data.message', 'Alguma coisa deu errado.')); 
      if (response.status !== 401) { 
      return $q.reject(response); 
      } 

      var userService = $injector.get('userService'); 
      if (userService.isLogged()) { 
      userService.logout(); 
      } 

      var $state = $injector.get('$state'); 
      $state.go('login'); 
      return $q.reject(response); 
     } 
     }; 
    }]); 
    } 
})(); 

ответ

0

Создать фабрику, используя код внутри return {.....} и нажать эту фабрику для сбора intercepters.

angular .module('app') .config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('yourInterceptorFactoryName'); }]);

+0

Спасибо! Я создал отдельную фабрику и толкнул ее. Работал!! –

Смежные вопросы