Qooxdoo на окне готов

Я просто пытался запустить событие после того, как приложение qooxdoo будет готово, поэтому я начал с приложения «Hello World» и добавил рекомендацию в самом конце основной функции:

 main : function(){ 
         // Hello World part...

    qx.event.Registration.addListener(window, "ready", function() { alert("application ready"); });
 }

но, похоже, он не срабатывал в Chrome или Firefox (я не тестировал IE), поэтому я покопался еще и нашел это, и это сработало.

if (qx && qx.event && qx.event.Registration)
{
  var manager = qx.event.Registration.getManager(window);
  var handler = manager.findHandler(window, "ready");

  if (handler.isApplicationReady()) {
    alert("application ready");
  }
}

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

Спасибо!


person Jonathan    schedule 25.02.2012    source источник


Ответы (3)


Получили ли вы «рекомендацию» от "от jquery к документу qooxdoo"?! (Всегда помогает, если вы цитируете свои источники).

Я думаю, что вы смешиваете вещи здесь. Во-первых, «окно готово» — это не то же самое, что «приложение готово». Я думаю, что «окно готово» (как показано на связанной странице руководства) — это низкоуровневое событие глобального объекта окна JS. Если вы используете высокоуровневое приложение qooxdoo (как кажется), это событие давно прошло, когда вы регистрируетесь для него в методе main. Таким образом, обработчик событий никогда не запускается.

Во втором примере кода вы не прослушиваете событие, а проверяете статус с помощью isApplicationReady(). Этот статус может вернуть значение true спустя много времени после того, как событие, которое превратило приложение из неготового в готовое, прошло.

person ThomasH    schedule 26.02.2012
comment
Да, именно там я нашел ссылку. Я не забуду включить это в следующий раз. Хорошо, ваше объяснение имеет смысл. Я не знал, что qooxdoo появляется после события готовности окна. Итак, срабатывает ли isApplicationReady() после запуска всех qooxdoo? По сути, я хочу запустить событие после того, как qooxdoo будет готов и загружен. - person Jonathan; 28.02.2012
comment
Опять же, isApplicationReady — это не запуск события, а проверка состояния. Что касается вашего вопроса, это действительно зависит от того, что вы имеете в виду, когда qooxdoo готов и загружен. В окне есть событие ready, но, как вы видели, оно срабатывает до того, как будет запущен любой ваш пользовательский код. - Для чего вам это мероприятие? Когда ваш код main() запускается, вы можете быть уверены, что все готово и загружено. Если вы хотите сообщить об этом какой-либо другой части вашего приложения, вы можете запустить специальное событие!? - person ThomasH; 29.02.2012

просто переопределить функцию finalize в области участника приложения

finalize : function()
{
    // Call super class
    this.base(arguments);
    alert("Hello World");
}
person Marcel Klein    schedule 09.03.2018

Более простой!!!

Событие «появление» виджета QX Core такое же, как событие «onReady», например, в других JS-фреймворках, таких как YUI, JQuery или что-то еще....

http://www.qooxdoo.org/5.0.2/api/#qx.ui.core.Widget~appear!event

имеет тот же эффект.

лучший, Тамер

person SmileMZ    schedule 06.08.2018