我是angular的新手,并试图创建一个全局错误处理程序。每当使用500 http状态调用资源时,我都想重定向到一般错误页面。
每当我实现一个注入器时,我都会收到“响应未定义”错误。我究竟做错了什么?我目前已将注释重定向并仍然收到错误。
var appServices = angular.module('appServices', ['ngResource']);
appServices.factory('ApplicationService', ['$resource', function ($resource) {
return $resource('http://localhost:23357/api/application/:id', { id: '@id' }, {
update: {
method: 'PUT'
}
});
}]);
appServices.factory('globalErrorInterceptor', ['$location', '$q', '$injector', function ($location, $q, $injector) {
return {
'responseError': function (r) {
console.log('global error test');
/*
commented out for testing
if (r.status == 500) {
$location.path('/error');
}
else
return $q.reject(r);
*/
return $q.reject(r);
}
}
}]);
appServices.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('globalErrorInterceptor')
}]);
然后在我的控制器中我这样调用资源。目前,Web服务设置为始终返回500。
$scope.applications = ApplicationService.query();
答案 0 :(得分:0)
我需要始终返回$ q.reject,因此工作拦截器看起来像:
appServices.factory('globalErrorInterceptor', ['$location', '$q', '$injector', function ($location, $q, $injector) {
return {
'responseError': function (r) {
console.log(r);
if (r.status == 500) {
$location.path('/error');
}
return $q.reject(r);
}
}
}]);