Я пытаюсь зарегистрировать мой прослушиватель onClick до dijit Button размещен как виджет в ячейке с GridX. Я сделал следующее, основываясь на примере test_grid_cellWidget
:Как зарегистрировать onClick прослушиватель на dijit Button внутри GridX?
{ field: "save", name:"Save",
widgetsInCell: true,
navigable: true,
decorator: function(){
//Generate cell widget template string
return '<button data-dojo-type="dijit.form.Button" data-dojo-attach-point="btn">Save</button>'
},
setCellValue: function(data){
//"this" is the cell widget
this.btn.set("label", "Speichern")
this.btn.connect("onClick", function(){
alert('clicked')
})
}
},
setCellValue
успешно выполнена, и метка изменена. Тем не менее, прослушиватель onClick не зарегистрирован и не вызывается, когда я нажимаю кнопку. Когда я использую синтаксис data-dojo-props="onClick:function"
, он работает, но требует объявления функции прослушивателя как глобальной, чего я бы хотел избежать.
В любом случае, у меня есть объект Button, и я выполняю код, найденный в документах dijit, поэтому он должен работать. Но почему в этом контексте ничего не зарегистрировано?
Нет, он должен работать, но GridX меняет что-то в виджетах, см. Мой ответ, я наконец нашел его. on() была моей первой догадкой. Возможно, он заблокирован из-за потенциальной утечки памяти, когда элементы управления сетью визуализируются и уничтожаются (например, при разбивке на страницы). –
. Я вижу ..., похоже, в 1.2 есть более новый подход, хотя, используя метод getCellWidgetConnects, упомянутый в вашей ссылке чуть ниже пример, который вы взяли. – Philippe
Я не мог заставить getCellWidgetConnects работать :( –