在Ext.js 4.2中的Observable上恢复几个suspendEvents

时间:2013-10-11 09:50:19

标签: extjs

我有一个带物品的商店。商店可以收到多个suspendEvents(true),每次调用时都会添加一个计数器。

示例:

var myStore = //get store from somewhere
// myStore.eventsSuspended is 0

myStore.suspendEvents(true);
// myStore.eventsSuspended is 1

myStore.suspendEvents(true);
// myStore.eventsSuspended is 2

要恢复商店resumeEvents()上的活动,必须调用两次。我一直在浏览文档。但无法找到一种干净的方式来呼叫resumeEvents()并恢复所有事件。

正确知道的解决方案之一是:

do {
        myStore.resumeEvents();
    }
while (myStore.eventsSuspended > 0);

但它感觉不安全,因为如果它们在以后的版本中改变它的工作方式,这可能会导致难以调试的不良行为。

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

是的,这确实很危险,你的循环可能会在另一段代码(例如布局管理器)暂停它们时调用resume事件。

您需要确保为挂断它们的每个电话调用resumeevents。它是以这种方式构建的,因为ext代码中的模块化方法使得事件不会恢复,直到所有已暂停事件的部分都触发了恢复。