2016-01-06 159 views
0

我有一個攔截器:AngularJS AJAX狀態代碼錯誤處理

angular.module('mobileDashboardApp') 
    .factory('HTTPInterceptor', function ($rootScope, $q, HTTPErrors) { 
     return { 
      responseError: function (response) { 
       $rootScope.$broadcast({ 
        500: HTTPErrors.serverError, 
        503: HTTPErrors.serviceError 
       }[response.status], response); 
       return $q.reject(response); 
      } 
     }; 
    }) 

而且常量定義如下:

angular.module('mobileDashboardApp') 
    .constant('HTTPErrors', { 
     serverError: 'internal-server-error', 
     serviceError: 'service-error' 
    }) 

我如何運行$ rootScope $上做一個控制檯。記錄每當有500錯誤?

在我的配置我添加使用攔截器:

.config(function ($httpProvider, $routeProvider) { 
    $httpProvider.interceptors.push([ 
     '$injector', 
     function ($injector) { 
      return $injector.get('HTTPInterceptor'); 
     } 
    ]); 

回答

0

據我所知,你是廣播上500個狀態和503個狀態HTTPErrors.serviceError串事件的HTTPErrors.serverError串事件。所以,你可以通過讓在任何一個控制器,你要訂閱此代碼對這些事件

$rootScope.$on(HTTPErrors.serverError, function(event, args){ 
    console.log("500"); 
}); 
$rootScope.$on(HTTPErrors.serviceError, function(event, args){ 
    console.log("503"); 
}); 
當然

你需要注入HTTPErrors成控制器趕上他們。