ExtJS: прикрепить внешние события к компоненту до его существования

#javascript #events #extjs

#javascript #Мероприятия #extjs

Вопрос:

Допустим, у меня есть компонент, и этому компоненту необходимо добавить прослушиватель событий к компоненту, который еще НЕ существует, но будет. Допустим, это необходимо для события ‘beforerender’ этого еще не созданного компонента.

Как сейчас, не зная, как это сделать в ExtJS, я бы сделал что-то вроде этого:

 var wait = setInterval(function() {
    var cmp = Ext.getCmp('myThing');

    if (cmp) {
        clearInterval(wait);
        cmp.on('beforerender', function() {
            // ... do something on render
        });
    }
}, 20);
  

Как бы я это сделал в Ext?

Ответ №1:

Сегодня утром нашел ответ в каком-то случайном репозитории github:

https://github.com/prettycode/Ext.exts/blob/master/Ext.latentEvent.js

По-видимому, есть onAvailable событие, которое Ext.ComponentManager раскрывает. Когда компонент создается, он проходит Ext.ComponentManager и onAvailable сообщает слушателям после добавления заданных компонентов.

Ответ №2:

Существует конфигурация под названием «слушатели», которая делает именно это:

 Ext.create('Ext.panel.Panel', {
    title: 'myPanel',
    ....
    listeners: {
        'beforerender': function(panel, a, b) {
         ....
         }
    }
});
  

Комментарии:

1. Хм, я думаю, вы немного упускаете суть. Приношу свои извинения за то, что не был понятен. Компоненту на странице необходимо прослушать событие для другого компонента, который еще не создан. 🙂