我从未在RESTAdapter中传递标题。
下面是我运行的适配器,sessionService是通过初始化程序注册的。我试过传递静态选项也没有运气。它永远不会到达我的记录点。
import DS from 'ember-data';
import config from '../config/environment';
/**
* CategoryAdapter
* @class adapters.Category
* @extends DS.RESTAdapter
*/
export default DS.RESTAdapter.extend({
host: config.api_host_static,
headers: function() {
console.log('authToken', this.get('sessionService').get('authToken'));
return {
"API_KEY": this.get('sessionService').get('authToken')
};
}
});
这里有一个jsbin: http://emberjs.jsbin.com/wuhilavinu/1/edit?html,js,console
答案 0 :(得分:1)
headers
需要是属性,而不是函数。通过将.property()
添加到函数声明中来使其成为计算属性。
headers: function() {
return {
"API_KEY": this.get('sessionService').get('authToken')
};
}.property('sessionService.authToken')
或者,如果您不想(或不能)依赖Ember的观察者,请将该属性设置为volatile,以便每次适配器发出请求时计算该属性:
headers: function() {
return {
"API_KEY": this.get('sessionService').get('authToken')
};
}.property().volatile()