gpt4 book ai didi

ember.js - 在 Ember 中调用 App.store.commit() 太快

转载 作者:行者123 更新时间:2023-12-02 02:01:00 27 4
gpt4 key购买 nike

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

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

我总是过快地点击我的按钮时,我的问题就来了。在某些时候,似乎虽然store.commit() 尚未完成(该项目仍然很脏),它已经在为另一个项目调用 store.commit(),抛出此错误:

Error: Attempted to handle event deleteRecord on App.Item:ember6954:f6a1c932-2db0-4933-7c92-69fbd3838229> while in state rootState.deleted.uncommitted. Called with undefined

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

有什么线索吗? :)

最佳答案

您可以尝试不同的方法,例如在触发记录的 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有关模型生命周期和您可以收听的所有事件的信息。

希望对您有所帮助。

关于ember.js - 在 Ember 中调用 App.store.commit() 太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com