如何显式 pass/get 自定义 dojo 事件中的对象(作为参数)

How to pass/get an object in custom dojo event explicitly (as argument)

我有两个嵌套的 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

}

感谢任何想法。

解决方案非常简单明了,我不知道为什么第一次尝试时它对我不起作用。

在子元素中,我们只是将当前小部件作为参数传递给函数 'extension point',因为它在 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() {}
    })