将更改还原为ember数据模型

时间:2012-06-07 16:33:14

标签: ember.js ember-data

有没有办法轻松将更改恢复为Ember数据模型?

我有一个绑定到编辑视图的模型。此视图使用户可以取消编辑,此时我想将更改还原为模型。有没有一种简单的方法可以在不克隆所有值的情况下执行此操作?

4 个答案:

答案 0 :(得分:12)

从Ember Data版本2开始,不再有交易,但您可以在保存版本之前将模型重置为上次状态:

model.rollbackAttributes();

答案 1 :(得分:6)

Ember Data支持交易的概念。我们可以创建一个事务并为它们分配Ember数据记录,如果我们要撤消更改,我们可以调用事务rollback()方法。此外,如果我们不创建显式事务,则将记录分配给默认事务,可以通过调用DS.store对象本身上的rollback()方法来回滚该事务。

答案 2 :(得分:5)

默认事务的名称名为“defaultTransaction”。实际上,当Embers提交时,它使用此默认事务。我无法直接在商店上直接回滚。

您应该拥有类似:

的内容,而不是使用store.rollback
store.get('defaultTransaction').rollback()

或(如果您在路由器事件管理器中)

event.get('store.defaultTransaction').rollback()

答案 3 :(得分:2)

如果模型处于“isDirty”状态,你也可以在模型上做rollback

this.get('model').rollback();

实施例

export default Ember.ObjectController.extend({

 actions: {
    cancelEditModel: function(){

        this.get('model').rollback();

        this.transitionToRoute('...');

        return false;
    }
  }
});