Javascript 在Dojo中,使用this.own更安全,还是附加事件安全?
我可以选择将事件附加到dijit的两种方式。我可以使用data dojo attach event附加事件:Javascript 在Dojo中,使用this.own更安全,还是附加事件安全?,javascript,dojo,Javascript,Dojo,我可以选择将事件附加到dijit的两种方式。我可以使用data dojo attach event附加事件: <div data-dojo-attach-event="onclick: _onClick"></div> 关于清理事件处理程序,哪个更安全?我知道this.own会在dijit被销毁时清理句柄,但是会在dijit被销毁时附加事件清理句柄吗 var aButton = new Button({ label: 'Click Me', onClic
<div data-dojo-attach-event="onclick: _onClick"></div>
关于清理事件处理程序,哪个更安全?我知道this.own会在dijit被销毁时清理句柄,但是会在dijit被销毁时附加事件清理句柄吗
var aButton = new Button({
label: 'Click Me',
onClick: function () {
console.log('i am a handler, too!');
}
}, domConstruct.create('div', {} this.domNode));
编辑:忘记添加此案例。当父dijit被销毁时,这个处理程序会被清理吗
var aButton = new Button({
label: 'Click Me',
onClick: function () {
console.log('i am a handler, too!');
}
}, domConstruct.create('div', {} this.domNode));
从源代码的外观来看,由
数据dojo attach事件
附加的处理程序被添加到一个\u attachEvents
数组中,该数组被迭代,并在destroyRendering
阶段调用remove。所以,两者都应该是安全的。同意两者都是安全的。。。但我会选择使用
on(this.someNode, 'click', '_onClick')
如果您需要更改此的范围。我发现很多次,特别是对于按钮,我希望调用dijit中的其他函数,而不是只访问按钮。在这种情况下,你可以这样做
on(this.someNode, 'click', lang.hitch(this, this._onClick));
大多数情况下,从事件对象获取所需的内容。更多信息请点击此处:
谢谢你,凯尔。为了简洁,我省略了lang.hitch。但是,它是如此普遍,以至于我想不出有一天我没有使用它。还值得注意的是,data dojo也会将事件作用域附加到它。Kyle,FYI,lang.hitch将字符串作为第二个参数,并在第一个参数中查找对象上具有相同名称的方法,因此您可以编写调用:on(this.someNode,'click',lang.hitch(this,“_onClick”);不要忘记对数据dojo附加事件使用“单击”而不是“onclick”(将不起作用)。