3

私のアプリケーションには、アイテムのリストと、最後のアイテムを削除するボタンがあります。次に、コントローラーで次のアクションを書きました。

  removeLastItem: ->
      lastItem = current_order.get('items').get('lastObject')
      lastItem.deleteRecord()
      App.store.commit()

私の問題は、ボタンをクリックし続けるのが速すぎるときに発生します。ある時点で、store.commit() が終了していないように見えますが (アイテムはまだ汚れています)、別のアイテムに対して既に store.commit() を呼び出しており、次のエラーがスローされています。

エラー: deleteRecordrootState.deleted.uncommitted 状態で App.Item:ember6954:f6a1c932-2db0-4933-7c92-69fbd3838229> のイベントを処理しようとしました。未定義で呼び出されます

このコードを RunLoop または Transaction 内に配置しようとしましたが、何も機能しませんでした。

手がかりはありますか?:)

4

2 に答える 2

2

didDeleteたとえば、レコードのイベントが発生するまでボタンを無効にするなど、別のアプローチを試すことができます。

例:

  removeLastItem: ->
    # get the reference to your button and disable it
    lastItem = current_order.get('items').get('lastObject')
    lastItem.deleteRecord()
    lastItem.on 'didDelete', =>
      # reenable your button again

    lastItem.on 'becameError', =>
      # reenable your button again and notify user?

    App.store.commit()

モデルのライフサイクルとリッスンできるすべてのイベントについては、こちらを参照してください。

それが役に立てば幸い。

于 2013-06-20T18:21:36.160 に答える