dojo - dojoAttachpoint 和 id 的区别

标签 dojo

<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();
上面的代码是一个模板,我叫dijit.byId('alarmCatDialog').show()来自 .js 文件。
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/

    相关文章:

    javascript - Dojo 1.6 hitch() "this"范围在 require 语句中

    javascript - 避免在 dijit/form/Horizo​​ntalSlider 中使用十进制值

    javascript - 使用 Dgrid 自定义排序

    javascript - 如何在 dojo javascript 中使用超链接

    javascript - 为什么 dojo CDN 导入代码中不存在该协议(protocol)

    javascript - Dojo:TabContainer - 如何在标题中放置菜单按钮?

    道场:将 ValidationTextBox 设置为模糊

    Dojo非模式对话框

    dojo - dijit BorderContainer 自动增长

    javascript - Dojo: TypeError: dojo.byId(...).attr 不是函数