0

フォームのリセット機能を動作させようとしています。この実装は 1 回は機能しますが、2 回目は機能しません。

キャンセル イベントが 2 回目にトリガーされると、次のエラーが発生します。

キャッチされないエラー: willSetPropertyrootState.deleted.saved 状態でイベントを処理しようとしました。{reference: [object Object], store: , 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()
4

1 に答える 1

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)
于 2013-08-17T22:43:21.170 に答える