2

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

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

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

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

1 回答 1

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();
于 2013-02-07T11:47:06.343 回答