2014-02-06 51 views
5

我一直在尋找一種管理我的角度應用程序中可能存在的http錯誤的方法。我一直在分別捕獲它們,但我想在全球進行管理。我爲我的http調用使用$ resource和$ http。有沒有辦法在全球範圍內管理它們?

回答

3

嘗試$http interceptor

從文檔報價:

angular.module('app',[]).config(function($httpProvider){ 

    $httpProvider.interceptors.push(function($q, dependency1, dependency2) { 
     return { 
     'request': function(config) { 
      return config; 
     }, 

     'response': function(response) { 
      // do something on success 
      return response || $q.when(response); 
     }, 
     'responseError': function(rejection) { 
     // do something on error 

      return $q.reject(rejection); 
     } 
     }; 
    }); 
}); 
0

您可以捕獲全局錯誤:

angular.module('app').factory('Interceptor',function($q) { 

    'use strict'; 


    function success(response) { 

     return response; 
    } 

    function error(response) { 

     if (response.status === 401) { 
     var deferred = $q.defer(); 
     // here you can broadcast or do anything you want 
     return deferred.promise; 
     } 
     // otherwise 
     return $q.reject(response); 
    } 

    return function (promise) { 

     return promise.then(success, error); 
    }; 
}); 



angular.module('app').config(function($urlRouterProvider, $locationProvider, $stateProvider, $httpProvider) { 
    $httpProvider.responseInterceptors.push('Interceptor'); 
}); 
+0

響應攔截器已經過時了。 http://docs.angularjs.org/api/ng.$http –

相關問題