我正在設置一個全局響應攔截器來處理重定向錯誤。問題是該頁面沒有使用ErrorCtrl,也沒有反映該位置已被更改的地址欄。這裏的工廠:Angular Response Interceptor不重定向
famaApp.factory('responseObserver', function responseObserver($q, $location) {
return {
'responseError': function(errorResponse) {
$location.path('/error/' + errorResponse.status);
return $q.reject(errorResponse);
}
};
});
其正被推入$ httpProvider的攔截器的app.config:
$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);
}
};
});
...
}]);
不幸的是,問題依然存在。
爲什麼你的服務使用回調? – cgTag