2013-10-11 31 views
0

我有一個存儲項目。該商店可以收到幾個suspendEvents(true),這將在每次調用時添加到計數器中。在Ext.js 4.2中恢復Observable上的幾個suspendEvents

例子:

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); 

但是因爲如果他們改變它是如何工作在以後的版本,這可能會導致不必要的行爲,是很難調試,感覺不安全。

任何人都知道如何解決這個問題?

回答

0

是的,這確實很危險,當另一段代碼(例如佈局管理器)暫停它們時,循環可能會調用resume事件。

你需要確保你打電話resumeevents爲每個電話你做暫停他們。它的構建方式是因爲ext代碼中的模塊化方法,因此事件不會恢復,直到所有已暫停事件的作品都觸發了簡歷。