在我的应用程序中,我有一个项目列表,以及一个用于删除最后一个项目的按钮。然后在我的控制器上我写了以下操作:
removeLastItem: ->
lastItem = current_order.get('items').get('lastObject')
lastItem.deleteRecord()
App.store.commit()
我的问题出现在我总是以太快的速度点击按钮。在某些时候,似乎虽然
store.commit() 尚未完成(该项目仍然脏),它已经为另一个项目调用 store.commit() ,抛出此错误:
错误:尝试处理事件deleteRecord
在
应用程序项目:ember6954:f6a1c932-2db0-4933-7c92-69fbd3838229>而
处于 rootState.deleted.uncompaid 状态。调用未定义
我已经尝试将此代码放入 RunLoop 或 Transaction 中,但没有任何效果。
有什么线索吗? :)
您可以尝试不同的方法,例如禁用按钮,直到记录didDelete
事件被触发。
Example:
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()
See here http://emberjs.com/guides/models/model-lifecycle/有关模型生命周期以及您可以收听的所有事件的信息。
希望能帮助到你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)