0

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

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

4

1 回答 1

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 节点在您的小部件中存储为具有相同名称的属性,因此很容易访问/修改。

于 2013-03-19T08:06:09.587 回答