2012-07-14 45 views
7

Ember.js數據協會比方說,我有2種型號:不節能

App.Address = DS.Model.extend({ 
    street: DS.attr('string'), 
    person: DS.belongsTo('App.Person') 
}) 

App.Person = DS.Model.extend({ 
    name: DS.attr('string'), 
    addresses: DS.hasMany('App.Address') 
}) 

現在我創建了一個人

App.person = App.Person.createRecord({name: 'Bill'}); 
App.store.commit(); 

如果我試圖將地址添加到人這樣

address = App.Address.createRecord({street: '123 Fake Street'}); 
App.person.get('addresses').pushObject(address); 

並承諾交易

App.store.commit(); 

新地址將被保存,但是人物不會被識別爲已更改; 即使ID列表已經從

{ 
    ... 
    "addresses": [] 
} 

{ 
    ... 
    "addresses": [3] 
} 

有沒有辦法讓燼數據知道,我的個人目標已經改變,它需要 可以得救?

編輯: Here是一個說明問題的jsfiddle。

+2

我不介意錯誤所在,如控制檯顯示預期的結果...任何最新狀態關於您的問題?也許你在哪裏使用舊的燼數據修訂?你還在遇到這個問題嗎? – 2012-07-19 09:29:05

回答

1

到目前爲止(ember-data revision 4)沒有辦法做到這一點。由於對象具有外鍵,因此該對象只保留在belongsTo方面,所以如果您在關係的屬於邊設置該值,它應該保留。下一個版本的數據應該解決這個問題。

1

左右,我發現這樣做的工作是隻手動添加的ID,如:

App.Address = DS.Model.extend({ 
    street: DS.attr('string'), 
    personID: DS.attr('string'), 
    person: DS.belongsTo('App.Person') 
}) 

那麼當你把你的數據,將PERSONID領域,它會模仿什麼人場似乎應該發送。