我想将service
中的字符串附加到每个请求中。尝试:
'use strict';
angular.module('main')
.service('Foo', function () {
self.bar = 'haz';
})
.run(function ($injector, Foo) {
$injector.get('$http').defaults.transformRequest = function (data, headersGetter) {
headersGetter()['X-Bar'] = Foo.bar;
};
});
错误:[
$injector:nomod
]模块'Foo'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
注意:我正在使用ui-router
并拥有多个文件;但是一个module
;如果这有所作为。
答案 0 :(得分:0)
请务必在HTML中的某处ng-app="main"
,因为肯定会出现错误消息,说您正在尝试加载模块Foo
...
接下来,您的方法几乎是正确的。首先,self
在Foo服务中应该是什么 - 使用this
。而且,你为什么要使用$injector
?只需直接注入$http
...您的代码如下:
angular.module('main')
.service('Foo', function () {
this.bar = 'haz';
})
.run(function ($http, Foo) {
$http.defaults.transformRequest = function (data, headersGetter) {
headersGetter()['X-Bar'] = Foo.bar;
};
});
答案 1 :(得分:0)
我的$injector
方法来自:http://engineering.talis.com/articles/elegant-api-auth-angular-js/
查看文档:{{3}} $ http,这里是我重写的方式:
angular.module('main')
.service('Foo', function () {
this.bar = 'haz';
})
.run(function ($injector, Foo) {
$injector.get('$http').defaults.headers.common['X-Bar'] = Foo.bar;
});
哪个工作正常。此外,看起来我的代码中还有另一个导致问题的错误...这是午夜编码的问题>。<