dojo dijit对话框底层没有显示

时间:2010-01-20 05:44:50

标签: javascript dojo

我试图在最初隐藏三个不同的对话框,然后根据ajax表单提交的响应,我希望显示不同的对话框。

提交表单并等待响应后,我可以显示“进行中”对话框。 然后,如果服务器返回错误响应,我想隐藏第一个对话框,然后根据错误响应类型显示另一个对话框。

我几乎可以实现我想做的事情,除非我隐藏第一个对话框并显示下一个对话框,底衬消失。 如果然后我在浏览器窗口内滚动,则正确显示参考底图。 我正在做这样简单的事情:

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);

这对我有用,但我认为可以有更好的解决方法。 任何人?

[再次编辑] 我正在使用的版本是dojo-1.3.2

1 个答案:

答案 0 :(得分:1)

在dojo 1.3中出现了很多关于对话框底层的问题,因为所有对话框对象都开始使用1个常见的底层对象(而不是创建自己的底层)。 我怀疑你的案例中的底层是在隐藏之前显示的 - 如果你愿意,你可以调试;)
作为一种解决方法,超时是可以的(它可以更少,我猜)。或者您可以尝试连接到hide方法(但不确定这会有所帮助):

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

但考虑到1.3中底层的所有问题,我会考虑使用dojo 1.4,因为dijit.Dialog的一些补丁已经提交:http://docs.dojocampus.org/releasenotes/1.4