Закройте все модальные диалоги в Dojo - PullRequest
3 голосов
/ 04 декабря 2008

Кто-нибудь знает, как я могу закрыть все модальные диалоги, созданные Dojo? Очевидно, раньше была функция dojo.popup.closeAll, но она больше недоступна в последней версии API Dojo, которая поставляется с Spring JS.

Ответы [ 5 ]

3 голосов
/ 09 декабря 2008

Это верно .... причина того, что метод больше не существует, заключается в том, что начиная с версии 1.0 тот, кто открывает всплывающее окно, отвечает за его закрытие. Это изменение архитектуры, которое я сделал.

Большинство виджетов (например, Меню) отслеживают, когда они размыты, а затем закрывают дочернее всплывающее окно. Таким образом, вы можете получить желаемый эффект, переключив фокус на сам документ или на какой-нибудь другой случайный узел. Конечно, это обходной путь.

Bill

3 голосов
/ 27 декабря 2008

Это найдет все буквенные диалоги на странице и скроет их:

dijit.registry.filter(function(w){ 
    return w && w.declaredClass == "dijit.Dialog" 
}).forEach(function(w){ 
    w.hide(); 
});
1 голос
/ 05 декабря 2008

Похоже, что единственный верный способ - это отслеживать ваши диалоги и закрывать их все, когда это необходимо, используя hide ().

0 голосов
/ 09 июля 2015

додзё> = 1.10:

define(['dijit/registry'], ...

registery.toArray().filter(function(w){ 
    return w && w.declaredClass == "dijit.Dialog" 
}).forEach(function(w){ 
    w.hide(); 
});
0 голосов
/ 19 февраля 2009

Я не знаю, имеет ли это какое-либо применение, но я склонен использовать только один диалог для каждой страницы (так как это модально). Все содержимое диалогов - это xhrGot с сервера, и я провожу все время dojo в течение жизненного цикла страницы, снова и снова перерабатывая одно и то же диалоговое окно, просто меняя его атрибуты: href и title. Я считаю, что это работает, а также несколько диалогов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...