2016-06-07 160 views
1

我不知道我是否需要刪除任何事件處理程序我已經把它貼,或者是否道場/ JS會自動地後我清楚我廢話了......去除Dojo事件的處理程序

比方說,我有兩個「頁面」,都通過他們自己的模塊加載。加載頁面1時,我使用on(element,event name,handler)模式顯示6個按鈕,全部共享on事件。當我移動到第2頁時,相關的頁面1節點被破壞,新的節點被加載了不同的按鈕和處理程序。是否有一個要求/好處,以確保當我離開一個「頁面」時,事件處理程序創建的所有內容都被清理乾淨了?

我讀過這個頁面,Events with Dojo,從最初帶着我走的是on事件遵循的模式:on(element,event name,handler)

然而,在考慮這個問題,我注意到了例子:

var handle = on(myButton, "click", function(evt){ 
    // Remove this event using the handle 
    handle.remove(); 
    ... 

所以,我想,蒸餾以上,我的問題是:

  1. 我是否需要擔心清潔後續無效on事件?

  2. 如果1. ==是,是我創建對事件的引用的唯一選項嗎?

+1

這可能會有幫助:dijit的/可破壞(http://dojotoolkit.org/reference-guide/1.10/dijit/Destroyable.html) – Himanshu

回答

2

使用this.own()dijit/Destroyable

指定手柄和刪除/摧毀它們時,這種情況下被破壞,除非他們已經刪除/手動銷燬的own()功能的軌道。

更多的相關信息在這裏: http://dojotoolkit.org/reference-guide/1.10/dijit/Destroyable.html `

+0

謝謝, @GibboK(和@Himanshu)。我會看看我是否能夠解決這個問題並將其應用到我的代碼中。使用Destroyable有什麼好處,而不是分配引用然後清理它們? – FishBarFood

+0

@FishBarFood this.own()跟蹤實例會自動銷燬它們,而無需手動刪除它們。如果你在jsfiddle上提供了一個代碼示例,我可以嘗試查看更多細節:)。如果你認爲這個答案也有助於你解決這個問題,請不要忘記批准它或upvote :)謝謝! – GibboK