2016-06-07 161 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