2012-08-15 49 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