我创建了一个模板化小部件,并且模板中有两个位置我想在运行时使用相同的值进行更新。类似于:
<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。
最佳答案
附加点是对 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 节点在小部件中存储为同名属性,因此很容易访问/修改。
关于javascript - 同一模板中可以有重复的 dojo-data-attach-points 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487957/