2010-01-20 2 views
1

Я пытаюсь сначала включить три разных диалога, как скрытые, а затем в зависимости от ответа от формы ajax submit, я хочу показать разные диалоги.dojo dijit dialog underlay не отображается

Когда форма отправлена ​​и ждет ответа, я могу показать диалоговое окно «in progress». Затем, если сервер возвращает ответ об ошибке, я хочу скрыть первое диалоговое окно, а затем отобразить другое диалоговое окно в зависимости от типа ответа об ошибке.

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

dijit.byId("progress_dialog").hide(); 
dijit.byId("error_dialog").show(); 

Любой есть предложения?

Я видел следующую страницу на веб-сайте Dojo, но, похоже, это временное решение для dojo 0.9? http://www.dojotoolkit.org/forum/dijit-dijit-0-9/dijit-support/showing-dialog-right-after-hiding-another-dialog-while-keeping-u

любая помощь будет оценена.

Спасибо.

[Изменить] В порядке, я «решил» проблему, добавив немного задержки, как показано ниже.

dijit.byId("progress_dialog").hide(); 
setTimeout(function() { 
    dijit.byId("error_dialog").show(); 
    }, 500); 

Это работает для меня, но я думаю, что может быть лучший способ его решения. Любые берущие?

[Edit снова] версия я работаю с в додзё-1.3.2

+0

Какую версию dojo вы используете? Dojo 1.3 имел значительные изменения в реализации диалога. – Kniganapolke

+0

Мой плохой. Я должен был указать это на мой вопрос. Версия, которую я использую, - 1.3.2. –

ответ

1

Там появилось много проблем с подкладке Диалоги в додзё 1.3, потому что все диалоговые объекты начали использовать 1 общий подкладывать объект (вместо создания собственной подкладки).
Я подозреваю, что подкладка в вашем случае показана до того, как она будет скрыта - вы можете отлаживать, если хотите;)
Как обходной тайм-аут в порядке (это может быть меньше, я думаю). Или вы можете попытаться подключиться к hide метода (но не уверен, что это поможет):

dojo.connect(dijit.byId("progress_dialog"), "hide", dijit.byId("error_dialog"), "show"); 
dijit.byId("progress_dialog").hide(); 

Но, принимая во внимание все эти вопросы с подкладке в 1.3, я бы рассмотреть возможность использования додзё 1.4, так как некоторые патчи для Dijit. Диалог был сделан: http://docs.dojocampus.org/releasenotes/1.4.

Смежные вопросы