现在我的路线文件中有这个:
employeeAppModule.config([
'$httpProvider',
function ($httpProvider) {
$httpProvider.interceptors.push(function () {
var token, headers, $cookies;
//inject cookies
angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
$cookies = _$cookies_;
}]);
return {
request: function (request) {
console.log(request);
token = $cookies.get('jwt-token');
alert('request' + token);
headers = request.headers || (request.headers = {});
if(token != null && token != 'undefined') {
headers.Authorization = token;
}
return request;
},
response: function (response) {
if(response.status && response.status.code === 401) {
alert('token wordt verwijderd');
}
if(response.data && response.data.token && response.data.token.length > 10) {
$cookieStore.put('jwt-token', 'Bearer ' + response.data.token);
}
return response;
}
};
});
}]);
我注入了ngCookies手册。是否也可以注入全局变量?我怎么能这样做?
答案 0 :(得分:0)
全局变量被定义为constant
(如果必须在配置阶段注入)或value
(如果他们不是)服务:
app.value('Global', Global);
如果全局变量在服务定义时不可用,则可以将它们定义为factory
以便懒惰地实例化。
angular.injector
是在config
块(以及几乎其他任何地方)中获取注入器的错误方法。它创建一个新的注入器实例,在其他任何地方都不使用。在$cookies
的情况下,副作用是不可测试的代码段,不具备完整的测试覆盖率。
Interceptor factory function启用了DI,可以使用
注入服务实例$httpProvider.interceptors.push(function ($cookies, Global) {
...