我一直在寻找一种管理我在角度应用程序中可以拥有的http错误的方法。我一直在分别捕捉它们,但我想在全球范围内管理它们。我使用$ resource和$ http作为我的http调用。有没有办法在全球范围内管理它们?
答案 0 :(得分:3)
引自文档:
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);
}
};
});
});
答案 1 :(得分: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');
});