Ember.js transaction.rollback只能运行一次(ember表单重置)

时间:2013-08-17 21:22:22

标签: ember.js ember-data

尝试使表单重置功能正常工作。此实现只运行一次,但之后将无法再次运行。

第二次触发取消事件时,会发生以下错误:

未捕获错误:在状态rootState.deleted.saved中尝试处理事件willSetProperty。使用{reference:[object Object]调用,存储:,name:name}

App.NewPageRoute = Ember.Route.extend
  model: (params) ->
    transaction = @get('store').transaction()
    transaction.createRecord(App.Page, siteId: params.site_id)


App.NewPageController = Ember.ObjectController.extend
  submit: ->
    @content.get('transaction').save()

  cancel: ->
    @content.get('transaction').rollback()

1 个答案:

答案 0 :(得分:0)

来自DS.Transaction::rollback的文档:

  

回滚事务后,属于它的任何记录   将返回商店的默认交易,以及当前   交易不应再次使用。

一个简单的解决方法是在回滚后创建一个新的事务。

cancel: ->
  siteId = @get('model.siteId')
  @content.get('transaction').rollback()
  transaction = @get('store').transaction()
  newModel = transaction.createRecord(App.Page, siteId: siteId)
  @set('model', newModel)