use*_*459 2 javascript angularjs angular-http-interceptors
要为我的每个请求添加拦截器标头,但它会给我以下错误.
未捕获错误:[$ injector:cdep]找到循环依赖项:$ http < - Auth < - httpRequestInterceptor < - $ http < - $ templateRequest < - $ route
app.js
var app= angular.module('myDemoApp',['ngRoute'])
app.factory('httpRequestInterceptor', ['Auth', function (Auth) {
return {
request: function (config) {
config.headers['x-access-token'] = Auth.getToken();
return config;
}
};
}]);
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpRequestInterceptor');
});
Run Code Online (Sandbox Code Playgroud)
验证服务
(function () {
'use strict';
myDemoApp.factory('Auth', ['$http', '$window', Auth]);
/******Auth function start*****/
function Auth($http, $window) {
var authFactory = {};
authFactory.setToken = setToken;
authFactory.getToken = getToken;
return authFactory;
/*setToken function start*/
function setToken(token) {
if (token) {
$window.localStorage.setItem('token', token);
} else {
$window.localStorage.removeItem('token');
}
}
/*getToken function start*/
function getToken() {
return $window.localStorage.getItem('token')
}
}
})();
Run Code Online (Sandbox Code Playgroud)
你不能这样做因为.
您已创建httpRequestInterceptor拦截所有$http请求.
现在,你是路过Auth的httpRequestInterceptor.
如果您将看到,请在内部Auth使用$http请求.
所以,你自己interceptor可以http使用Auth.
因此,它的循环错误,并angularjs不允许你这样做!
$http从Auth工厂删除或不要将服务插入本身使用的拦截器$http.
我希望你得到,如何创建无限循环链,因此circular dependency出错!
| 归档时间: |
|
| 查看次数: |
332 次 |
| 最近记录: |