Проблема с вложенным Dojo.Dialog's - PullRequest
0 голосов
/ 16 марта 2011

У меня есть два «вложенных» или «каскадных» диалога на моей веб-странице (один диалог открывает другой диалог поверх него), и я сталкиваюсь с проблемами при попытке закрыть «самый верхний» диалог.

Вот сценарий:

  1. Диалог 1 открыт
  2. Диалог 2 открывается с помощью кнопки внутри Диалога 1
  3. Диалог 2 закрывается при нажатии кнопки со следующим кодом:

    dialog2.hide ();
    dialog2.destroyRecursive ();

  4. Проблемы случаются.

«Проблемы» определяются как «модальность» (как, например, диалог является модальным) для диалога 2 (то есть вы можете теперь взаимодействовать с диалогом 1), И теряетсядля диалога 1 (имеется в виду, что вы можете взаимодействовать со страницей позади диалога), но диалог 1 все еще существует .

Интересно, что эта проблема не проявляется, когда вы используете X в правом верхнем углу, чтобы закрыть диалоговое окно.Есть ли * лучший * способ закрыть диалог?

РЕДАКТИРОВАТЬ: Я использую додзё 1.5

1 Ответ

1 голос
/ 16 марта 2011

У меня есть вложенные диалоги, работающие без проблем с 1.5.

Попробуйте пропустить вызов destroyRecursive() или измените его на destroy(), чтобы увидеть, есть ли различия.

Кроме того, вы звоните hide() в свой обработчик кликов? Попробуйте установить таймер для вызова hide() после возвращения обработчика. Я помню, что вызов hide для диалогового окна внутри обработчика иногда приводит к ошибкам.

Что вы подразумеваете под «потерей модальности», то, что действительно происходит, так это то, что подстилающий диалог скрыт Подложка - это DIV (хорошо, div внутри div), связанный с классом dijit.DialogUnderlay, и div обычно отображается на dijig.Dialog.show и скрыт при hide. Div охватывает всю область экрана, что и обеспечивает «модальность».

Вы также должны зайти в свой любимый инструмент для веб-разработчиков (инструменты разработчика Firebug или WebKit / IE), чтобы проверить этот базовый div. Это должно быть в самом конце вашего body. Посмотри, не спрятано ли оно.

...