2014-05-19 55 views
0

我一直在嘗試一段時間來更改我的模型的主鍵以使用ember-data存儲。我有一個名爲'Addon'的燈具沒有'id'字段,但他們有'artifactId'字段。我已經找到了多個解決這個問題的建議,但目前爲止還沒有任何解決方法,但似乎很多已經過時了。似乎是什麼做的最新的方法是這樣的:Ember:使用FixtureAdapter更改模型的主鍵

App.Adapter.map('App.Addon', { 
    primaryKey: 'artifactId' 
}); 

這只是給了我「遺漏的類型錯誤:無法讀取屬性未定義的‘地圖’。」我必須首先以某種方式初始化地圖嗎?我發現的大部分示例都使用RESTAdapter - 它只在那裏工作嗎?

我app.js在它的全是這樣的:

window.App = Ember.Application.create(); 
App.ApplicationAdapter = DS.FixtureAdapter.extend(); 
App.Adapter.map('App.Addon', { 
    primaryKey: 'artifactId' 
}); 

回答

1

我認爲,你不能與FixtureAdapter的當前默認值更改模型的PrimaryKey。

FixtureAdapter的目的不是提供與您的服務器API類似的JSON對象,默認情況下,燈具應該處於規範化的形式,因爲無論是在您的應用程序還是視圖中,您都將訪問DS.Model的實例其主鍵始終爲id

{{#with model}} 
     model({{id}}): {{name}} 
{{/with}} 

你的服務器可以爲了它能夠序列化的PrimaryKey到模型屬性ID使用自己的適配器必須在安裝模式串行所以只有當提供取其PrimaryKey屬性。

container.register('serializer:user', DS.RESTSerializer.extend({ 
    primaryKey: 'artifactId' 
})); 

低於可以使用的RESTAdapter或FixtureAdapter一個例子:

http://emberjs.jsbin.com/batih/1/edit

+0

我覺得我只是做是錯誤的。因爲它只是一個json字符串,我從一個特定的URL(只能讀取CRUD)中獲得,似乎最好的方法是在路徑的模型初始化中查詢它,而不是將其寫入存儲並加載它再次離開那裏。 –