【问题标题】:dojo dijit dialog underlay not showingdojo dijit 对话框底图未显示
【发布时间】:2011-01-07 03:26:47
【问题描述】:

我最初尝试隐藏三个不同的对话框,然后根据 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

【问题讨论】:

  • 您使用什么版本的道场? Dojo 1.3 在对话框底层实现方面发生了重大变化。
  • 我的错。我应该在我的问题中指出它。我使用的版本是 1.3.2。

标签: javascript dojo


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2012-10-08
    相关资源
    最近更新 更多