Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript(Dojo):当对象被销毁时,事件侦听器是否被删除_Javascript_Events_Dojo - Fatal编程技术网

Javascript(Dojo):当对象被销毁时,事件侦听器是否被删除

Javascript(Dojo):当对象被销毁时,事件侦听器是否被删除,javascript,events,dojo,Javascript,Events,Dojo,我创建了一个对话框,其中有一些带有事件的按钮。当我以递归编程方式或按X键销毁对话框时,是否删除了所有创建的事件侦听器(隐藏、取消、单击1、单击2)? 因为我经常调用这个部分(这里我只发布了我的代码的简化版本)(针对不同的对话框),而且我的代码可能有一些内存泄漏,我想消除它们。因此,请告诉我,像eventHide.remove();,那样独自删除事件侦听器是否有必要/有意义 另外:我尝试使用on(比如eventHide)来处理单击和取消事件,但没有成功 var myDialog = new Dia

我创建了一个对话框,其中有一些带有事件的按钮。当我以递归编程方式或按X键销毁对话框时,是否删除了所有创建的事件侦听器(隐藏、取消、单击1、单击2)?
因为我经常调用这个部分(这里我只发布了我的代码的简化版本)(针对不同的对话框),而且我的代码可能有一些内存泄漏,我想消除它们。因此,请告诉我,像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用于跟踪实例的句柄,然后在实例被销毁时销毁它们

更多资讯:


您可以使用dijit/Destroyable中定义的
this.own
,这是dijit/WidgetBase的基础,因此也是大多数小部件的基础(确保您的自定义小部件继承自hit)

dijit/Destroyable用于跟踪实例的句柄,然后在实例被销毁时销毁它们

更多资讯: