我已经创建了一个模板化的小部件,模板中有两个地方我想在运行时使用相同的值进行更新。类似于:
<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
Site: <span data-dojo-attach-point="siteNameNode">Placeholder</span>
</div>
...
<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'bottom'">
Site: <span data-dojo-attach-point="siteNameNode">Placeholder</span>
</div>
在我的Javascript中我有:
_setSiteNameAttr: { node: "siteNameNode", type: "innerHTML" },
...
this.set("siteName", "Your Site Name");
当代码运行时,只更新第二个siteNameNode。这是否意味着附加点在模板中必须是唯一的,或者是否有不同的方法来处理重复项?如果不允许重复,是否有一种常用的方法可以一次更新多个值,或者我是否需要为节点提供不同的附加点名称?
感谢。我正在使用Dojo 1.8.3。
答案 0 :(得分:3)
附加点是对DOM节点的引用。如果您尝试将两个DOM节点连接到同一个连接点,我认为这不会有用,因为您有两个不同的DOM节点(这就是为什么只有最后一个存储为连接点)。
但是,为什么不将节点的内容设置为相同的值,如下例所示?只需将您的第二个附加点重命名为siteNameNode2
即可设置。
html.set(this.siteNameNode, "Your Site Name");
html.set(this.siteNameNode2, "Your Site Name");
我正在使用dojo/html
模块将两个DOM节点的内部HTML设置为相同的内容,但您也可以执行以下操作:
this.siteNameNode.innerHTML = "Your Site Name";
附加点的DOM节点存储为小部件中具有相同名称的属性,因此可以轻松访问/修改。