在angularjs中加入攔截器,發現$http發出的請求會攔截,但$window.location.href確不會攔截,想請問一下攔截器是不是只攔截$http發出的請求?
为情所困2017-05-15 17:15:17
官方文件解釋的比較清楚,也有例子
https://docs.angularjs.org/ap...$http
// register the interceptor as a service
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
return {
// optional method
'request': function(config) {
// do something on success
return config;
},
// optional method
'requestError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
},
// optional method
'response': function(response) {
// do something on success
return response;
},
// optional method
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
$httpProvider.interceptors.push('myHttpInterceptor');
// alternatively, register the interceptor via an anonymous factory
$httpProvider.interceptors.push(function($q, dependency1, dependency2) {
return {
'request': function(config) {
// same as above
},
'response': function(response) {
// same as above
}
};
});
曾经蜡笔没有小新2017-05-15 17:15:17
所謂 $window
其实是对浏览器 window
物件的引用的二次包裝,那為什麼會有這個東東呢?目的主要是為了程式碼可測試性。
所以,結論是這玩意跟 $http 一點關係都沒有,自然也不會走攔截器
當然,我還是挺懂題主,無非就是希望在做跳轉時做一些額外的事情。這個問題,只能從路由方面去解決了。
以上!