简体   繁体   中英

Javascript (Dojo): Is event-listener removed when object is destroyed

I create a dialog in which there are some buttons with events. When I destroy the dialog recursive programmatical or by pressing the X are there deleted all the created event-listener (hide, cancel, click1, click2)?
Because I call this part (here I posted only a simplified version of my code) very often (for different dialogs) and it seems that my code could have some memory leaks I want to eliminate them. So please tell me, is it necassary/make sense to remove the event-listener all by myself like eventHide.remove(); ?

Additional: I tried to use the on (like the eventHide) for the click- and cancel-events but it didn't work.

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

You could use this.own defined in dijit/Destroyable, which is a base of dijit/_WidgetBase and thus most widgets (make sure your custom widget inherit from hit.).

dijit/Destroyable is used to track handles of an instance, and then destroy them when the instance is destroyed.

More infos: http://dojotoolkit.org/reference-guide/1.10/dijit/Destroyable.html

http://dojotoolkit.org/reference-guide/1.8/dojo/Evented.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM