Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2015, 05:20
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Доступ к компоненту из обработчика события его 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?
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2015, 11:55
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

This object may contain any of the following properties.

При добавлении обработчика, указывется область видимости - me. М.б., добавить circle в свойства этого объекта или в его свойство config?

Или вариант:
var circle = Ext.get(t);
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2015, 15:26
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Странно, но я там прочел следующее:
The options object passed to Ext.util.Observable.addListener.
http://docs.sencha.com/extjs/5.1/5.1...nt-event-click
То есть явно указано, что будет передаваться объект с опциями для метода addListener().

Цитата:
добавить circle в свойства этого объекта
Именно так я сейчас временно и сделал. Но это явно мувитон))) так сказать. Должен быть нормальный способ. Но какой этот способ по задумки Сенчи?

Ext.get не катит. Там на выходе только Ext.dom.Element, а у меня circle это потомок Ext.Component.
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2015, 17:27
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

А понятно. Эти знания доступны не всем... Но вам расскажу

Не нужно извлекать элемент 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
Ответить с цитированием
  #5 (permalink)  
Старый 22.05.2015, 17:39
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

опля... ну и фокусы вы мне показываете! Ясно, есть чем заняться теперь на следующей неделе))) Видел это, но не использовал. Спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 22.05.2015, 21:23
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от novikov
Или вариант:
var circle = Ext.get(t);
Не-не-не, никогда не вариант. Забудьте эти страшные сказки эпохи Ext 2-3. Делегирование это правильный метод.

А вот ещё добавлю, что в первом варианте у вас eOpts пустое, потому как и не передаёте ничего.
Ответить с цитированием
  #7 (permalink)  
Старый 23.05.2015, 00:12
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Пока делегирование не помогло получить доступ именно к компоненту. Так как this у меня меняется на вызывающий no() компонент...
Ответить с цитированием
  #8 (permalink)  
Старый 23.05.2015, 00:41
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

А вот кстати до меня сейчас только дошло, что вы присвоение переменной me нигде не показываете. Оно у вас чему равно, и соответственно какой контекст вы в on() передаёте?
Ответить с цитированием
  #9 (permalink)  
Старый 23.05.2015, 03:37
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

me = this это контекст в котором происходит вызыв метода on()
Ответить с цитированием
  #10 (permalink)  
Старый 23.05.2015, 03:46
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Код покажите. ;)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить реальную ширину элемента без его отрисовки archytector Элементы интерфейса 7 12.01.2011 09:26
Обработка события элемента внутри создавшего его объекта pauluss Общие вопросы Javascript 10 10.09.2010 17:01
Массивы удаление элемента и вставка на его место другого mycoding Общие вопросы Javascript 1 19.04.2010 22:30
эмуляция события click для элемента select Polo Events/DOM/Window 4 16.12.2009 13:29
Поиск элемента по куску его Id gregOlsener Events/DOM/Window 1 25.08.2008 22:04