ember.js - 如何防止模型与 ember-data 一起提交?

标签 ember.js ember-data

我正在使用最新版本的 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/

相关文章:

ember.js - 理解和使用 Ember 组件生命周期钩子(Hook)

javascript - 在 EmberJS 中,如何在 Controller 中使用转换数据?

javascript - EmberJS 没有请求从 rest api 获取数据

ember.js - EmberJS,DS.Model,如何知道特定属性是否脏?

node.js - 带有根键的 Ember 数据。非标准 REST 协议(protocol)?

javascript - Ember JS : How to reuse ember data while calling?

ember.js - 过滤模型时,deleteRecord 不会更新 ArrayController

javascript - ember-cli 迁移 : global app module import

ember.js - 如何每x秒重新加载数据?

ember.js - 为什么/何时需要重新打开 ember.js 中的类(class)?