2012-08-15 59 views
0

在帶有ember-data(使用1.0pre版本)的Ember.js中,對數據的所有更改都將保存到存儲的defaultTransaction中。使用store.commit()提交商店時,對數據的所有更改都將保存回API(使用RESTAdapter)。使用ember-data的單記錄持久性

我想更多的控制對象被持久。所以現在,我已經獲得了商店和適配器的實例,然後調用類似adapter.createRecord(store, type, record)updateRecord,其中typeApp.Person模型,並且記錄是該模型的實例。

這是使用DS.RESTAdapter的內部位,我不認爲這是直接使用的。雖然它的工作,我希望有一個更好的方式來獲得更多的持久性控制,然後store.commit()。我的應用程序的業務邏輯和用戶體驗需要更好的控制。

回答

3
transaction = router.get('store').transaction(); 
person = transaction.createRecord(App.Person); 

person.set('name', 'Thanatos'); 

transaction.commit(); 

觀看關於這個的耶胡達介紹。 http://www.cloudee.com/preview/collection/4fdfec8517ee3d671800001d

+0

謝謝你的回答,這是非常有幫助的! 但似乎事務只會對多個更改有用(如defaultTransaction中默認添加的所有更改)。只需要進行一次更改,事務就會成爲一個附加的代碼層,它看起來應該很簡單。如果我想要保存/保存單個更改,那麼我只有一個更改,一個創建或更新,如果ember認爲事務對所有內容都有幫助,那麼應該將我的單個更改包裝在一個事務中。 我可能是錯的。打開討論! – 2012-08-16 01:04:41