如何防止使用ember-data提交模型?

时间:2013-02-07 11:12:32

标签: ember.js ember-data

我正在使用最新版本的ember-data,我有一个典型的情况,大多数模型都需要由ember-data管理,所以当我在商店做提交时,他们会与后端同步。在一个特定情况下,我有一个仅用于客户端的模型(但我将其创建为DS.Model,因为它与正在运行的应用程序中的其他ember-data模型有关系)。

我可以在模型上标记什么,以确保它看起来永远不会“脏”或“新”

我在创建对象时尝试做类似这样的事情,但由于某些奇怪的原因,它仍在被跟踪更改

App.Foo.createRecord({name: 'foo', loaded: true, new: false, dirty: false});

1 个答案:

答案 0 :(得分:2)

您可以将模型添加到自己的交易中。

transaction = this.get('store').transaction();
myObject = transaction.createRecord(App.Foo, {name: 'foo', loaded: true, new: false, dirty: false});
transaction.commit();
// or alternatively: myObject.transaction.commit()

正常的store.commit()不会影响此事务中的对象。

Ember实际上在后台创建了一个默认事务,这是当你调用一个裸的this.get('store')时提交的内容.commit();

您还可以通过以下方式将现有记录添加到交易中:

foo = App.Foo.find(1);
transaction = this.get('store').transaction();
transaction.add(foo);
foo.set('name', 'bar');
transaction.commit();

如果您不想提交交易并且也不想保留您在其中所做的更改,则可以致电:

transaction.rollback();