Javascript 角响应拦截器不';t重定向
我正在设置一个全局响应拦截器来处理错误重定向。问题是页面没有使用ErrorCtrl,地址栏也没有反映位置已更改。这是工厂:Javascript 角响应拦截器不';t重定向,javascript,angularjs,Javascript,Angularjs,我正在设置一个全局响应拦截器来处理错误重定向。问题是页面没有使用ErrorCtrl,地址栏也没有反映位置已更改。这是工厂: famaApp.factory('responseObserver', function responseObserver($q, $location) { return { 'responseError': function(errorResponse) { $location.path('/error/' + errorR
famaApp.factory('responseObserver', function responseObserver($q, $location) {
return {
'responseError': function(errorResponse) {
$location.path('/error/' + errorResponse.status);
return $q.reject(errorResponse);
}
};
});
正在推送到app.config中$httpProvider的拦截器中:
$httpProvider.interceptors.push('responseObserver');
我检查了正在调用的一个特定服务中的路径,如下所示:
AuthenticationService.authenticate($scope.credentials, function(success) {
if (success) {
...
} else {
console.log($location.url());
...
}
});
$location.url()是正确的,/error/502。知道我做错了什么吗
编辑:
我已经更新了我的代码,但仍然不起作用。这是我的新配置:
app.config(['$routeProvider', '$httpProvider',
function($routeProvider, $httpProvider) {
$httpProvider.interceptors.push(function ($q, $location) {
return {
responseError: function (response) {
$location.path('/error/' + response.status);
return $q.reject(response);
}
};
});
...
}]);
不幸的是,问题仍然存在。尝试直接在应用程序模块配置中的拦截器中添加“responseError”。这对我有用
var app = angular.module('yourAppName', []);
app.config(function ($httpProvider) {
$httpProvider.interceptors.push(function ($q, $location) {
return {
responseError: function (response) {
$location.path('/error/' + response.status);
return $q.reject(response);
}
}
}
});
没有必要验证响应
AuthenticationService.authenticate($scope.credentials, function(success) {
if (success) {
...
} else {
console.log($location.url());
...
}
});
第三个参数是回调错误。使用“$q.reject”拒绝响应时执行
移除
return $q.reject(response);
解决了问题。为什么您的服务使用回调?我已经更新了我的问题-我按照您的建议做了,得到了相同的结果。
return $q.reject(response);