2012-06-07 66 views
12

是否有方法可以轻松地还原对Ember Data模型的更改?将更改还原为余烬数据模型

我有一个模型绑定到编辑视图。此视图使用户可以取消编辑,此时我想恢复对模型的更改。有没有简单的方法来做到这一点,而不克隆所有的价值观?

+2

'对象.get('transaction')。rollback()' –

回答

6

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

+2

谢谢!为了完整起见,在Ember数据源中有一个很好的交易记录。阅读DS.Transaction – outside2344

+1

定义上方的注释块。事务注释块还说,我们可以在默认事务的情况下直接在存储对象上运行“提交”或“回滚”。当我尝试回滚时,出现以下错误: TypeError:Object <(DS.Store的子类):ember1117>没有方法'rollback' 对此有何帮助? – inertia

5

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

而不是使用store.rollback的,你应该是这样的:

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

或者(如果你是在一个路由器事件管理器)

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

你也可以做一个rollback上如果它处于“isDirty”状态,则自我模型。

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

export default Ember.ObjectController.extend({ 

actions: { 
    cancelEditModel: function(){ 

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

     this.transitionToRoute('...'); 

     return false; 
    } 
    } 
}); 
10

从灰烬数据2版本开始,没有交易了,但你可以重置模式,以自己的最后的状态保存之前的版本:

model.rollbackAttributes();