Как вызвать событие щелчка после того, как связанный интерфейс загрузился только в первый раз?

#extjs #extjs5

#extjs #extjs5

Вопрос:

Я хочу убедиться, что определенный интерфейс загружен и отображается, прежде чем я смогу вызвать событие щелчка по кнопке, содержащейся в этом интерфейсе.

Я создаю интерфейс, используя следующий код :

    var mainV2 = Ext.create('widget.main', {
            renderTo: Ext.getBody(),
            hideMode: 'visibility',
           //Update
            listeners: {
              afterrender: function() {
                Ext.getCmp('#somebutton').fireEvent('click');
                        }
                 }
        });

        mainV2.show();
 

И запуск события прямо под указанным кодом

 Ext.getCmp('#idcheckItem').fireEvent('click');
 

Но, похоже, fireEvent не влияет на прослушиватель кнопок. Я думал, потому что вызов должен быть синхронным.

Мой вопрос в том, как убедиться mainV2 , что загрузилось, прежде чем запускать событие щелчка по кнопке, только когда mainV2 вызывается и отображается в первый раз?

Спасибо за большую помощь.

Ответ №1:

Вы можете создать метод afterRender в контроллере panels.

Вот скрипка

Эта скрипка запускает событие нажатия кнопок после отображения окна. Обязательно поместите метод afterRender в контроллер. Я столкнулся с некоторыми проблемами при размещении его непосредственно на панели.

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

1. Возможно ли создать прослушиватель afterRender на панели mainV2?

2. Пожалуйста, смотрите Редактирование: я хочу, чтобы событие запускалось только при первом отображении панели.

3. afterRender находится на компоненте в классическом инструментарии и виджете в современном инструментарии. Итак, все, что расширяет эти методы, вы можете создать методом afterRender. afterRender вызывается только один раз, поэтому событие будет запущено только один раз.

4. Я не совсем понимаю, можно ли добавить afterRender в качестве слушателя (как показано в моем редактировании) вместо создания метода в контроллере, как вы упомянули?

5. В контейнере нет события afterrender, поэтому я не думаю, что это сработает. С учетом сказанного, после визуализации компонента этот метод вызывается фреймворком. Я думаю, это похоже на событие afterRender. Я не понимаю, почему то, что я предложил, не сработает. Можете ли вы поместить свой код в скрипку и показать мне, чего он не делает?