14

有没有办法轻松恢复对 Ember Data 模型的更改?

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

4

4 回答 4

14

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

model.rollbackAttributes();
于 2016-01-29T14:36:27.300 回答
6

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

于 2012-06-07T18:50:47.797 回答
5

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

而不是使用 store.rollback,你应该有类似的东西:

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

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

event.get('store.defaultTransaction').rollback()
于 2013-01-07T22:02:31.443 回答
3

如果模型处于“isDirty”状态,您也可以对模型本身进行回滚。

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

例子

export default Ember.ObjectController.extend({

 actions: {
    cancelEditModel: function(){

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

        this.transitionToRoute('...');

        return false;
    }
  }
});
于 2015-01-12T10:59:45.487 回答