2016-11-11 47 views
0

所以,想象一下有原生dijit/form/Select元素的監聽器,來監聽change事件:道場:如何發出正確的自定義窗口小部件「變」

nativeSelectWidget.on('change', lang.hitch(this, onSelectClick)); 

現在,我已經創建了自己的自定義窗口小部件類似要選擇和嘗試使用相同的代碼來聽:

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 
}); 

到Widget的_setValueAttr,試圖將其刪除。沒有值已通過..檢查如何本機Select定義 - https://github.com/dojo/dijit/blob/master/form/Select.js

有什麼建議嗎?

回答

1

對於要使用它,你應該這樣做(在您的自定義窗口小部件)的方式:

1)繼承dojo/Evented
2)增加以下內容:

_setValueAttr: function(value) { 
    this._set('value', value); 
    this.emit('change', value); 
} 

這應該做技巧

但是,這種實現有一個缺點: 如果您從另一段代碼更改值,發射仍然會發送,並且通常我們希望只發出用戶事件,而不是程序化更改。

相關問題