Получить значение флажка в dojo с помощью метода on()
Используя dojo 1.9, я пытаюсь получить доступ к значению флажка, не так как в примере в документации:
require(["dijit/form/CheckBox", "dojo/domReady!"], function(CheckBox){
var checkBox = new CheckBox({
name: "checkBox",
value: "agreed",
checked: false,
onChange: function(b){ alert('onChange called with parameter = ' + b + ', and widget value = ' + this.get('value') ); }
}, "checkBox");
});
но, переместив событие onChange в:
query('#checkBox').on('change', function(){
var value = query(this).attr('value');
});
или что-нибудь подобное. Я просто хочу получить доступ к нему из метода on(). Но я получаю одно и то же значение каждый раз - флажок установлен. Есть идеи?
2 ответа
И снова я сделал ту же ошибку - это должно быть
registry.byId('checkBox').on('change', function(){
var value = this.value;
});
dojo/query возвращает обычные dom-узлы виджетов, и поэтому мы не можем прикрепить обработчик события on непосредственно к результату запроса. Как вы сказали, мы можем использовать registry.byId(...)
Кроме того, позвольте мне дать предложение, в котором запрос будет возвращать большее количество узлов dom.
array.forEach(dojo.query('.classname'),function(node){
dijit.getEnclosingWidget(node).on('change',function(){
var value = this.value;
console.info(value);
});
});
dijit.getEnclosingWidget (domNode) - даст непосредственный родительский узел виджета упомянутого 'domNode'