Доступ к компоненту из обработчика события его HTML-элемента
Делаю я такой обработчик:
circle.getEl().on("click", "onCircleClick", me); где circle потомок Ext.container.Container. И соответственно обработчик создаю: onCircleClick: function(e, t, eOpts) { ... } В итоге по клику получаю: e = как полагается Ext.even.Event, t = ссылка на HTML-элемент, а вот eOpts = {}, то есть пустому объекту. Хотя по инструкции там обещали манну небесную в виде опций http://docs.sencha.com/extjs/5.1/5.1...til.Observable В общем проблема в том, что мне в обработчике onCircleClick нужно иметь доступ к circle. Как его получить "штатными" средствами Ext? |
This object may contain any of the following properties.
При добавлении обработчика, указывется область видимости - me. М.б., добавить circle в свойства этого объекта или в его свойство config? Или вариант: var circle = Ext.get(t); |
Странно, но я там прочел следующее:
The options object passed to Ext.util.Observable.addListener. http://docs.sencha.com/extjs/5.1/5.1...nt-event-click То есть явно указано, что будет передаваться объект с опциями для метода addListener(). Цитата:
Ext.get не катит. Там на выходе только Ext.dom.Element, а у меня circle это потомок Ext.Component. |
А понятно. Эти знания доступны не всем... Но вам расскажу :)
Не нужно извлекать элемент circle.getEl(). Сразу работаете с компонентом. circle.on("click", "onCircleClick", me, { element: 'el'}); Или circle.on("click", "onCircleClick", me, { delegate: circle.getEl() }); посмотрите про делегирование: http://docs.sencha.com/extjs/5.1/5.1...od-addListener |
опля... ну и фокусы вы мне показываете! Ясно, есть чем заняться теперь на следующей неделе))) Видел это, но не использовал. Спасибо!
|
Цитата:
А вот ещё добавлю, что в первом варианте у вас eOpts пустое, потому как и не передаёте ничего. |
Пока делегирование не помогло получить доступ именно к компоненту. Так как this у меня меняется на вызывающий no() компонент...
|
А вот кстати до меня сейчас только дошло, что вы присвоение переменной me нигде не показываете. Оно у вас чему равно, и соответственно какой контекст вы в on() передаёте?
|
me = this это контекст в котором происходит вызыв метода on()
|
Код покажите. ;)
|
Часовой пояс GMT +3, время: 18:48. |