Как я могу проверить, загружен ли диалог Dojo? - PullRequest
5 голосов
/ 21 июля 2009

Я запускаю функцию, которая должна закрывать диалог Dojo, если он загружен. Как проверить, работает ли диалог Dojo? Я использую чистый JavaScript и проверяю по id, если он не определен?

if (dijit.byId("blah") !== undefined) { 
     destroyRecursive dijit;
}

Или я могу использовать свойство объекта диалога, например:

isFocusable method
isLoaded property

Ответы [ 2 ]

4 голосов
/ 21 июля 2009

Диалог предоставляет два свойства , которые вы можете проверить: isLoaded и open. Копая код, вы найдете следующие описания:

  • open: True, если в данный момент на экране отображается диалог.
  • isLoaded: True, если в ContentPane есть данные, указанные во время инициализации (через href или встроенный контент) или через attr ('content', ...) / attr ('href', ...) False, если у него нет контента, или если ContentPane все еще находится в процессе загрузки href.

Итак, вы можете просто:

var dialog = dijit.byId("blah");
if( dialog.open ) {
    dialog.destroy();
}
1 голос
/ 21 июля 2009

Вы хотите скрыть это или уничтожить?

Если вы просто хотите показать / скрыть это, вы можете сделать следующее:

var dialog = dijit.byId('blah');
if (dialog) {
  if (dialog.open) {
    dialog.hide();
  }
  else {
     dialog.show();
  }
}

Если вы хотите уничтожить его, чтобы освободить память:

var dialog = dijit.byId('blah');
dialog.destory();

Я думаю, destroy является рекурсивным, поскольку он вызывает родительский метод destroy, а один из его родителей - dijit.layout.ContentPane.

...