4

丢弃对记录所做的更改的推荐方法是什么?

我有以下逻辑将脏记录恢复到原始状态。

if controller.get('isDirty')
  controller.get('content').rollback()

除非尝试提交记录失败,否则此方法有效。

如果我尝试提交更改并且服务器以错误响应,则不再可能以这种方式回滚记录。在这种情况下,Ember Data 或 RESTAdapter 是否提供了将记录恢复到其原始状态的内置方法?


我正在使用DS.RESTAdapterEmber Data 修订版 11打包

4

2 回答 2

2

我发现了一些显然有效的东西,尽管我不知道为什么。这是我在模型中所做的:

App.User = DS.Model.extend({

  becameInvalid: function(errors) {
    this.get('transaction').rollback();
    //this.rollback(); <- This doesn't work. You get becameClean error.
  }
});

sly7-7对该问题的评论给了我这个想法。

于 2013-03-26T12:12:26.203 回答
1

通过路由器中的事务创建/更新您的记录。在此处查看有关如何执行此操作的更多详细信息。

var transaction = App.store.transaction()
transaction.createRecord(App.Foo);
transaction.commit()
transaction.rollback()
于 2013-02-04T11:02:00.373 回答