所以,假设有一个本地dijit/form/Select
元素的监听器,它监听change
事件:
nativeSelectWidget.on('change', lang.hitch(this, onSelectClick));
现在,我创建了自己的自定义窗口小部件,类似于Select并尝试使用相同的代码进行侦听:
mySelectWidget.on('change', lang.hitch(this, onSelectClick));
onSelectClick
看起来像:
_onTypeChange: function(value) {
console.debug('The value is, value)
}
问题在于,在第二种情况下onSelectClick
没有收到任何值(undefined
)。
试图补充:
on.emit(this.domNode, 'change', {
bubbles: true,
cancelable: true
});
到小工具_setValueAttr
,尝试将其删除。没有传递任何价值..检查了原生Select
的定义方式 - https://github.com/dojo/dijit/blob/master/form/Select.js
有什么建议吗?
答案 0 :(得分:1)
对于您想要使用它的方式,您应该(在您的自定义小部件中):
1)继承自dojo/Evented
2)添加以下内容:
_setValueAttr: function(value) {
this._set('value', value);
this.emit('change', value);
}
应该做的伎俩
但是,这种实现有一个缺点: 如果您从另一段代码更改值,则仍会发送emit,并且通常我们希望仅针对用户事件发出,而不是针对程序化更改。