[英]Javascript (Dojo): Is event-listener removed when object is destroyed
我創建一個對話框,其中有一些帶有事件的按鈕。 當我以編程方式銷毀對話框或按X時,是否刪除了所有已創建的事件偵聽器(隱藏,取消,click1,click2)?
因為我經常(對於不同的對話框)稱呼這一部分(在這里我只發布了代碼的簡化版本),並且看來我的代碼可能存在一些內存泄漏,所以我想消除它們。 因此,請告訴我,像eventHide.remove();一樣自行刪除事件偵聽器是否必要/有意義? ?
另外:我嘗試將on(如eventHide)用於單擊和取消事件,但是沒有用。
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');
});
您可以使用dijit / Destroyable中定義的this.own
,它是dijit / _WidgetBase的基礎,因此也是大多數小部件的基礎(確保自定義小部件繼承自hit。)。
dijit / Destroyable用於跟蹤實例的句柄,然后在銷毀實例時銷毀它們。
更多信息: http : //dojotoolkit.org/reference-guide/1.10/dijit/Destroyable.html
http://dojotoolkit.org/reference-guide/1.8/dojo/Evented.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.