2014-12-08 35 views
0

我从来没有在RESTAdapter中传递标头。在DS.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') 
     }; 
    } 
}); 

一个here jsbin: http://emberjs.jsbin.com/wuhilavinu/1/edit?html,js,console

回答

1

headers需要一个属性,而不是功能。通过将.property()添加到函数声明中,使其成为计算属性。

headers: function() { 
    return { 
     "API_KEY": this.get('sessionService').get('authToken') 
    }; 
}.property('sessionService.authToken') 

或者,如果你不想(或不能)依靠Ember的观察员,让物业极易挥发,它计算每个适配器发出请求的时间:

headers: function() { 
    return { 
     "API_KEY": this.get('sessionService').get('authToken') 
    }; 
}.property().volatile() 

这全部在API documentation for the RESTAdapter中解释。

+0

哦。我的。 我是100%确定我曾尝试通过它作为属性之前。我一定做了错误的事情(比如传递this.get('authToken')),它现在可以工作了,Duh!:-)谢谢! – hussfelt 2014-12-08 15:36:09

相关问题