带有确认按钮的 Dojo 对话框,以小部件作为内容

Posted

技术标签:

【中文标题】带有确认按钮的 Dojo 对话框,以小部件作为内容【英文标题】:Dojo Dialog with confirmation button with a widget as content 【发布时间】:2014-07-11 13:52:26 【问题描述】:

我正在尝试实现通用 dojo 确认对话框。我在 *** 中找到了有关如何在链接中执行此操作的大量资源:Dojo Dialog with confirmation button

上面链接中提到的示例与http://jsfiddle.net/phusick/wkydY/ 一样工作得很好。

现在我想扩展它以支持更复杂的小部件,其中包含此对话框中的 dojo 数据类型和 dojo 附加点。我尝试通过设置对话框的消息来实现这一点。 即

message: "<div data-dojo-attach-point='myAttachPoint'><button data-dojo-type='dijit/form/Button' type='button'>Click me</button></div>";  

(在此处查看此代码:http://jsfiddle.net/wkydY/304/)

当我这样做并单击 MessageBox.Confirm' 按钮时,不会像在原始版本中那样弹出对话框。我到底做错了什么或在这里错过了一步?

(编辑:基于评论)

【问题讨论】:

“代码不再工作” - 请在此处更具体 我修改的代码可以在:jsfiddle.net/wkydY/304找到。在这个版本的代码中,因为我设置了小部件内容,点击“MessageBox.Confirm”按钮不会像在原始版本中那样弹出确认对话框。 请更新您的问题,以便 其文本 包含您所说的“代码不起作用”的规范。这是一条非常重要的信息,不应该只是在下面的评论中。 【参考方案1】:

这里有语法错误

var confirmDialog = new ConfirmDialog(
    title: "My Title",
    message: "<div data-dojo-attach-point='myAttachPoint'><button data-dojo-type='dijit/form/Button' type='button'>Click me</button></div>";       
);

因为在对象定义中不应该有分号,即在message: '...';之后

另外,由于您使用的是非 AMD Dojo,您应该在消息中输入type="dijit.form.Button"

所以上面几行的正确版本是:

var confirmDialog = new ConfirmDialog(
    title: "My Title",
    message: "<div data-dojo-attach-point='myAttachPoint'><button data-dojo-type='dijit.form.Button' type='button'>Click me</button></div>"       
);

查看实际操作:http://jsfiddle.net/phusick/wkydY/305/

【讨论】:

以上是关于带有确认按钮的 Dojo 对话框,以小部件作为内容的主要内容,如果未能解决你的问题,请参考以下文章

HTML 在 dojo 小部件中显示为纯文本

Dojo RadioButton,以编程方式设置组

dojo dijit 额外模板连接事件

在带有 DOJO 插件的 Struts2 应用程序中使用 dijit 小部件有啥特殊要求吗?

删除并创建带有内容窗格的 dojo 手风琴容器

JavaScript 基础学习