2013-10-27 105 views
1

使用以下模型和商店,我可以使用FIXTURES成功加載數據,如下所示。在具有多種關係的商店中創建新記錄

App.Item = DS.Model.extend({ 
    itemName: DS.attr('string'), 
    strategy: DS.belongsTo('strat') 
}); 

App.Strat = DS.Model.extend({ 
    stratName: DS.attr('string'), 
    items: DS.hasMany('item',{async:true}) 

App.Store = DS.Store.extend({ 
    adapter: DS.FixtureAdapter 
}); 

App.StratLeg.FIXTURES = 
[ 
{id: 1, itemName: 'I1', strategy: 1}, 
{id: 2, itemName: 'I2', strategy: 2}, 
{id: 3, itemName: 'l3', strategy: 2}, 
]; 

App.Strat.FIXTURES = 
[ 
{id: 1, stratName: 's1', items: [1]}, 
{id: 2, stratName: 's2', items: [2,3]} 
]; 


但是,當我嘗試添加使用JavaScript的新紀錄,我遇到了各種各樣的錯誤。繼在DS.store的EmberData-API機制的文檔的例子,我想:

var pushData = { 
    strat: [{id: 100, stratName: "s5", items: [101]}], 
    item: [{id: 101, itemName: "I5", strategy: 100}]}; 

this.store.push ('strat', pushData); 

這產生了以下錯誤:

「你必須在傳遞給哈希的‘身份證’ 「推」。

我也試過store.createRecord的各種各樣的化身,這導致了不同的錯誤。

什麼是這樣做的正確方法?

回答

1

根據,如果你在灰燼數據的最新版本,你可以使用pushPayload並在此格式(沒有按鍵的多元化的格式)

var pushData = { 
    strats: [{id: 100, stratName: "s5", items: [101]}], 
    items: [{id: 101, itemName: "I5", strategy: 100}] 
}; 

store.pushPayload('strat', pushData); 

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

+1

感謝他們推你回覆。我嘗試了你的建議,並得到以下錯誤:TypeError:serializer.pushPayload不是一個函數。我使用的是ember-data-beta-3.js。 – user2436810

+0

看起來它對我有用,我包括一個工作示例。 – Kingpin2k

+0

你打算怎麼做? – Kingpin2k

相關問題