dojo - 如何允许模块弹出对话框

时间:2009-09-13 18:36:02

标签: dojo

我有一个模块。我需要它才能显示模态对话框。

似乎我需要将一个div注入主DOM然后解析它。这是正确的方法吗?是否存在样本(甚至像这样的实用程序并不常见)

1 个答案:

答案 0 :(得分:5)

DojoCampustests directory中的几乎所有内容都有示例:

var pane = dojo.byId('thirdDialog');    
thirdDlg = new dijit.Dialog({
  id: "dialog3",
  refocus:false,
  title: "Programatic Dialog Creation"
},pane);

请注意,此特定窗口小部件不需要手动插入DOM - 它会将自身附加到页面的末尾。这里Dialog构造函数的第二个参数 - pane - 是对其内容应该在Dialog中显示的节点的引用。

更新:根据新信息,您应该尝试这样做:

dojo.require("dijit.Dialog");
dojo.addOnLoad(function() {
    secondDlg = new dijit.Dialog({
        title: "Programatic Dialog Creation",
        style: "width: 300px",
        content: "Insert text here"
    });
    secondDlg.show()
});

如此处所示,您可以在content属性中传递Dialog内容。 (此示例可在包含Dojo的任何页面上的FireBug中执行。)

更新:那么,你想在Dialog中有一个表单吗?这里没什么特别的。嘿,你甚至可以在那边有一个dijit形式!请务必查看DojoCampus article on Dialogs以了解Dialog如何与dijit表单进行通信。

dojo.require("dijit.Dialog");
dojo.require("dijit.form.TextBox");
dojo.addOnLoad(function() {
    secondDlg = new dijit.Dialog({
        title: "Programatic Dialog Creation",
        style: "width: 300px",
        content: "<h2>Sample Form</h2>" +
            "name: <input dojoType='dijit.form.TextBox' type='text' name='name' id='name'>"
    });
    secondDlg.show()
});

(此示例在包含Dojo的任何页面上都可以在FireBug中执行。)