2017-04-20 43 views
0

我創建了一個對話框,其中有一些帶有事件的按鈕。當我銷燬對話遞歸程序或通過按X在那裏刪除所有創建的事件偵聽器(隱藏,取消,click1,click2)?
因爲我經常(對於不同的對話框)調用這個部分(這裏我只發佈了我的代碼的一個簡化版本),並且我的代碼似乎可能有一些內存泄漏,我想消除它們。所以請告訴我,是否必須自己移除事件偵聽器才行,比如eventHide.remove();

附加信息:我試圖使用on(如eventHide)的點擊和取消事件,但它沒有奏效。Javascript(Dojo):在銷燬對象時是否刪除事件偵聽器

var myDialog = new Dialog({ 
    content: 'Testdialog' 
}); 

myDialog.show(); 

var btn1 = new dijit.form.Button({ label: "Ok" }); 
var btn2 = new dijit.form.Button({ label: "Help" }); 

myDialog.containerNode.appendChild(btn1.domNode); 
myDialog.containerNode.appendChild(btn2.domNode); 

var eventHide = on.once(myDialog, "hide", function(e){ 
    console.log('hide'); 
    myDialog.destroyRecursive(); 
}); 

dojo.connect(btn1, "onClick", function(){ 
    console.log('click ok'); 
    myDialog.destroyRecursive(); 
}); 

dojo.connect(btn2, "onClick", function(){ 
    console.log('click help'); 
    myDialog.destroyRecursive(); 
}); 

dojo.connect(myDialog, "onCancel", function(){ 
    console.log('cancel'); 
}); 

回答

相關問題