2016-11-13 7 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

ありがとうございます!私は別の工場を作り、それを押しました。働いた!! –

関連する問題