2015-12-08 20 views
1

我們的一些傳統代碼可以創建具有on和匿名函數的偵聽器。這些聽衆的壽命有限。ExtJS 5.0 - 在偵聽器中調用un或removeEventListener?

代碼是這樣的:

me.getEl().on(someCondition()? 'mousedown': 'touchstart', 
    function(event) { 
     if (someOtherCondition()) { 
      destroyStuff(); 
      // We don't need this listener any more! 
      // *** 
     } 
    } 
); 

檢查資源使用應用程序運行時,這些殭屍聽衆積累,特別是鼠標懸停的,佔用了大量的資源和週期。

是否有使用// ***的評論如下unremoveEventListener和刪除監聽的方法嗎?沿着這些線說:

event.target.removeEventListener(event.type, /* reference this anonymous function? */); 

回答

3

您有多個選項。

  • on接受一個options參數可能包含single:true如果它應該只執行一次。我認爲這對你的例子不起作用,因爲可以多次調用這個監聽器,但可能對於沒有條件的一些用例。
  • 您可以使用mondestroyable: true來創建可銷燬的偵聽器。這些聽衆可以使用mun刪除。
+0

'mon'在ExtJS5中不推薦使用 - 只是使用'on'。正如你所說,可以使用'destroyable:true'參數來返回一個處理程序來刪除監聽器。 –

+0

這是沒有道理的,因爲通常情況下,您會棄用在較新版本中從源代碼中刪除的內容。在6.0.1中,'mon'不再被棄用,至少不是根據文檔。 – Alexander

+0

謝謝,我使用'single:true'來處理它所應用的情況。其他人則爲其他人做了TODO! –

相關問題