有没有办法轻松将更改恢复为Ember数据模型?
我有一个绑定到编辑视图的模型。此视图使用户可以取消编辑,此时我想将更改还原为模型。有没有一种简单的方法可以在不克隆所有值的情况下执行此操作?
答案 0 :(得分:12)
从Ember Data版本2开始,不再有交易,但您可以在保存版本之前将模型重置为上次状态:
model.rollbackAttributes();
答案 1 :(得分:6)
Ember Data支持交易的概念。我们可以创建一个事务并为它们分配Ember数据记录,如果我们要撤消更改,我们可以调用事务rollback()方法。此外,如果我们不创建显式事务,则将记录分配给默认事务,可以通过调用DS.store对象本身上的rollback()方法来回滚该事务。
答案 2 :(得分:5)
默认事务的名称名为“defaultTransaction”。实际上,当Embers提交时,它使用此默认事务。我无法直接在商店上直接回滚。
您应该拥有类似:
的内容,而不是使用store.rollbackstore.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;
}
}
});