dojoAttachpoint和id之间的区别

eag*_*arn 4 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>
Run Code Online (Sandbox Code Playgroud)

如何显示我试过的这个对话框 dijit.byId('alarmCatDialog').show();

上面的代码是一个模板,我dijit.byId('alarmCatDialog').show()从.js文件中调用.

dojo.attr(this.numberOfDateNode)这段代码有效,我得到了数据.但如果我将dojoattachpoint更改为id,那么我尝试dijit.byId('numberOfDateNode')将无法工作;

phu*_*ick 9

您的numberOfDateNode是一个普通的DOM节点,而不是一个widget/dijit,即javascript对象扩展dijit/_Widget,这就是你无法通过它获得引用的原因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.