在DS.RESTAdapter中传递带有请求的标头

时间:2014-12-08 08:42:23

标签: ember.js ember-data

我从未在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

1 个答案:

答案 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()

这一点在API documentation for the RESTAdapter中解释。