我有两个嵌套的dojo小部件。子窗口小部件在单击时发出自定义事件,由父项处理。
儿童部件:
elementClick: function (e) {
this.onSelected(this.el)
},
onSelected: function(el) {
//extension point
},
父窗口小部件:
const elementSelected = function () {
console.log(this)
/*
here `this` references just to what I need,
but `this` in contex of parent widget looks confusing
*/
}
const bingSelectedHandler = function (el) {
el.on('selected', elementSelected)
}
我想在父窗口小部件中的事件处理程序中删除令人困惑的this
关键字。有没有办法让它以这种方式工作,例如:
const elementSelected = function (element) {
console.log(element) //use argument instead of `this` keyword
}
感谢您的任何想法。
答案 0 :(得分:0)
解决方案非常简单明了,我不知道为什么第一次尝试时它对我没用。
在子元素中,我们只是将当前小部件作为参数传递给函数,它是'扩展点',因为它在dojo中调用:
return declare('TreeElement', [_WidgetBase, _TemplatedMixin], {
<... other widget's methods and properties ...>
elementClick: function(e) {
if (e.target.classList.contains('checkbox')) {
return false
}
//Here, pass 'this' as an argument
this.onFocused(this)
},
onFocused: function() {}
})