Ember.js 将更改还原为余烬数据模型

Ember.js 将更改还原为余烬数据模型,ember.js,ember-data,Ember.js,Ember Data,有没有一种方法可以轻松地将更改恢复到余烬数据模型 我有一个绑定到编辑视图的模型。此视图允许用户取消编辑,此时我希望恢复对模型的更改。有没有一种简单的方法可以做到这一点,而不必将所有的值都克隆出来?余烬数据支持事务的概念。我们可以创建一个事务并将余烬数据记录分配给它们,如果要撤消更改,可以调用transactions rollback()方法。此外,如果我们不创建显式事务,则记录将分配给默认事务,该事务可以通过调用DS.store对象本身上的rollback()方法回滚。默认事务的名称命名为“de

有没有一种方法可以轻松地将更改恢复到余烬数据模型


我有一个绑定到编辑视图的模型。此视图允许用户取消编辑,此时我希望恢复对模型的更改。有没有一种简单的方法可以做到这一点,而不必将所有的值都克隆出来?

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

默认事务的名称命名为“defaultTransaction”。事实上,当余烬提交时,它使用这个默认事务。我不能直接在商店上使用回滚

您不应使用store.rollback,而应具有以下功能:

store.get('defaultTransaction').rollback()
或者(如果您在路由器事件管理器中)

如果模型处于“isDirty”状态,您也可以对其本身进行分析

范例

export default Ember.ObjectController.extend({

 actions: {
    cancelEditModel: function(){

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

        this.transitionToRoute('...');

        return false;
    }
  }
});

从Ember Data version 2开始,不再有事务,但您可以使用以下命令将模型重置为保存版本之前的最后状态:

model.rollbackAttributes();

object.get('transaction').rollback()
谢谢!为了完整性起见,在Ember数据源中有一个很好的事务写入。阅读DS.transaction定义上方的注释块transaction的注释块还指出,在默认事务的情况下,我们可以直接在store对象上运行“提交”或“回滚”。当我尝试执行回滚时,我得到一个错误:TypeError:Object没有方法“rollback”,对此有任何帮助吗?
export default Ember.ObjectController.extend({

 actions: {
    cancelEditModel: function(){

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

        this.transitionToRoute('...');

        return false;
    }
  }
});
model.rollbackAttributes();