你能在同一个模板中有重复的dojo-data-attach-points吗?

时间:2013-03-18 22:13:48

标签: javascript dojo

我已经创建了一个模板化的小部件,模板中有两个地方我想在运行时使用相同的值进行更新。类似于:

<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。

1 个答案:

答案 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节点存储为小部件中具有相同名称的属性,因此可以轻松访问/修改。