如何从另一个对话框打开Dojo对话框

时间:2012-07-15 17:16:32

标签: dojo dialog

我无法从另一个dijit.Dialog打开dijit.Dialog。我在这里看到其他帖子表明它在Dojo版本1.5中运行良好,但我使用的是Dojo 1.6.1并没有太多运气。 http://dojotoolkit.org/documentation/tutorials/1.7/dialogs_tooltips/处的Dojo文档似乎表明,支持这一点的地方说:“了解dijit / Dialog的一个重要事实是将实例添加到”堆栈“中,以便您可以在一个实例上添加实例另一个“。

当我在当前显示的第二个对话框上调用show()时,第二个对话框暂时几乎看不到,然后浏览器刷新,只显示第一个对话框。

这是一个简单的例子:

<html>
<head>
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dijit/themes/claro/claro.css" />
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js" djConfig="parseOnLoad: true"></script>
    <script type="text/javascript">
        dojo.require("dijit.dijit");
        dojo.require("dijit.Dialog");
        dojo.ready(function () {
            dijit.byId("dialog1").show();
        });
    </script>
</head>
<body class="claro">

    <div data-dojo-type="dijit.Dialog" id="dialog1" data-dojo-props="title:'Dialog 1'">
        I'm dialog 1
        <a href="" onclick="dijit.byId('dialog2').show();">Open dialog 2</a>
    </div>

    <div data-dojo-type="dijit.Dialog" id="dialog2" data-dojo-props="title:'Dialog 2'" style="visibility:hidden;">
        I'm dialog 2
    </div>

</body>
</html>

我有一种感觉,我错过了一些简单的事情。有人可以帮帮我吗?理想情况下,dialog1将保留在后台,而dialog2作为模态对话框显示在其上方。

1 个答案:

答案 0 :(得分:1)

你有一个锚标记,它会触发document.location.href = "",因为onclick会返回true

参见以下内容: Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

正确

<a href="javascript:void(0); " 
       onclick="dijit.byId('dialog2').show(); return false ">
                                        <!-- note 'false' -->
 Open dialog 2</a>

如果onclick返回true.show()会这样做),那么预期<a>的预期行为,您点击链接会将您带到另一个页。虽然href是空白,但会重新加载相同的页面。