我正在使用最新版本的 ember-data,并且有一个典型的情况,大多数模型需要由 ember-data 管理,因此当我在商店上进行提交时,它们会与后端同步。在一种特殊情况下,我有一个仅在客户端使用的模型(但我将其创建为 DS.Model,因为它与正在运行的应用程序中的其他 ember 数据模型有关系)。
我可以在模型本身上标记什么,以确保它永远不会看起来“脏”或"new"
我尝试在创建对象时执行类似的操作,但由于某些奇怪的原因它仍然被更改跟踪
App.Foo.createRecord({name: 'foo', loaded: true, new: false, dirty: false});
最佳答案
您可以将模型添加到其自己的事务中。
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();
关于ember.js - 如何防止模型与 ember-data 一起提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14749733/