如何显式 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() {}
})
我有两个嵌套的 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() {}
})