AngularJS AJAX状态代码错误处理
我有一个拦截器:AngularJS AJAX状态代码错误处理,angularjs,Angularjs,我有一个拦截器: angular.module('mobileDashboardApp') .factory('HTTPInterceptor', function ($rootScope, $q, HTTPErrors) { return { responseError: function (response) { $rootScope.$broadcast({ 500: H
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'
})
当出现500错误时,如何运行$rootScope.$on来执行console.log
在我的配置中,我使用以下方法添加了拦截器:
.config(function ($httpProvider, $routeProvider) {
$httpProvider.interceptors.push([
'$injector',
function ($injector) {
return $injector.get('HTTPInterceptor');
}
]);
据我所知,您正在500状态上广播
HTTPErrors.serverError
string事件,在503状态下广播HTTPErrors.servicererror
string事件。因此,您可以通过在您想要订阅这些事件的任何控制器上使用此代码来捕获它们
$rootScope.$on(HTTPErrors.serverError, function(event, args){
console.log("500");
});
$rootScope.$on(HTTPErrors.serviceError, function(event, args){
console.log("503");
});
当然,您需要将HTTPErrors
注入该控制器