代码之家  ›  专栏  ›  技术社区  ›  tim_wonil

Dojo Dijit对话框参考底图未显示

  •  1
  • tim_wonil  · 技术社区  · 15 年前

    我尝试将三个不同的对话框作为初始隐藏状态打开,然后根据Ajax表单提交的响应,我希望显示不同的对话框。

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

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

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

    有人有建议吗?

    我在Dojo网站上看到了以下页面,但它似乎是Dojo0.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 回复  |  直到 15 年前
        1
  •  1
  •   Kniganapolke    15 年前

    Dojo 1.3中对话框的底层出现了很多问题,因为所有对话框对象都开始使用1个公共的底层对象(而不是创建自己的底层)。
    我怀疑您案例中的参考资料在隐藏之前就已经显示出来了-如果愿意,您可以调试;)
    作为一个解决方法,超时是可以的(我想可以少一些)。或者您可以尝试连接到 hide 方法(但不确定这是否有帮助):

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

    但是考虑到1.3中关于底层的所有问题,我将考虑使用Dojo1.4,因为Dijit.Dialog的一些补丁已经提交: http://docs.dojocampus.org/releasenotes/1.4 .