在我的应用程序中,我有一个项目列表和一个删除最后一个的按钮。然后在我的 Controller 上,我写了以下动作:

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

我的问题是我持续快速单击按钮时出现。在某个时候似乎
store.commit()尚未完成(该项目仍然很脏),它已经在为另一个项目调用store.commit(),并抛出以下错误:



我已经尝试过将此代码放入RunLoop或Transaction中,但没有任何效果。

有什么线索吗? :)

最佳答案

您可以尝试其他方法,例如禁用按钮,直到触发记录的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()

有关模型生命周期以及您可以收听的所有事件的信息,请参见here

希望能帮助到你。

07-26 09:42