<div dojoType="dojo.Dialog" id="alarmCatDialog" bgColor="#FFFFFF" bgOpacity="0.4" toggle="standard">
<div class='dijitInline'>
       <input type='input' class='dateWidgetInput' dojoAttachPoint='numberOfDateNode' selected="true">
</div>

如何显示这个对话框我试过 dijit.byId('alarmCatDialog').show();
上面的代码是一个模板,我从 .js 文件中调用了 dijit.byId('alarmCatDialog').show()
dojo.attr(this.numberOfDateNode) 这段代码有效,我得到了数据。但是如果我将 dojoattachpoint 更改为 id,那么我尝试 dijit.byId('numberOfDateNode') 将不起作用;

最佳答案

您的 numberOfDateNode 是一个普通的 DOM 节点,而不是小部件/dijit,即扩展 dijit/_Widget 的 javascript 对象,这就是您无法通过 dijit.byId("numberOfDateNode") 获得对它的引用的原因。改用 dojo.byId("numberOfDateNode") 就可以了。
dojoAttachPoint 或其 HTML5 有效版本 data-dojo-attach-point 在 dijit 模板中用于将 DOM 节点或子 dijit 的引用附加到 dijit javascript 对象,这就是 dijit.byId('alarmCatDialog').numberOfDateNode 引用您的 <input type='input' class='dateWidgetInput' .../> 的原因。

使用 data-dojo-attach-point 的主要原因是:

  • 您可以创建多个 dijit 实例,因此您的模板无法通过 ID 识别节点/dijit,因为您将拥有多个具有相同 ID 的节点/dijit
  • 这是一种优雅的声明方式,因此您的代码不会充满 dijit.byId/dojo.byId
  • 关于dojo - dojoAttachpoint 和 id 的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11056858/

    10-11 20:16