【问题标题】:Ember Data and dirty recordsEmber 数据和脏记录
【发布时间】:2013-02-02 23:14:40
【问题描述】:

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

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

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

除非尝试提交记录失败。

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


我正在使用带有 Ember Data 修订版 11 的打包 DS.RESTAdapter

【问题讨论】:

  • 我也有同样的问题。这是因为 Ember-data 中的问题而发生的吗?

标签: ember.js ember-data


【解决方案1】:

虽然我不知道为什么,但我发现了一些显然有效的方法。这是我在模型中所做的:

App.User = DS.Model.extend({

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

sly7-7issue 的评论给了我这个想法。

【讨论】:

  • 干杯人。这帮助了我,将其添加到控制器操作中。 ala embers 待办事项列表:acceptChanges: function(){ this.set('is_editing', false); if (Ember.isEmpty(this.get("model.title"))){this.get('model').rollback();} else {this.get('model').save();}},
【解决方案2】:

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

var transaction = App.store.transaction()
transaction.createRecord(App.Foo);
transaction.commit()
transaction.rollback()

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多