2014-12-08 74 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

相關問題