如何显式传递/获取自定义dojo事件中的对象(作为参数)

时间:2018-03-15 16:49:31

标签: dojo

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

}

感谢您的任何想法。

1 个答案:

答案 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() {}
    })