Получить значение флажка в 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'

Другие вопросы по тегам