2013-03-18 36 views
0

我已经创建了一个模板化窗口小部件,并且在模板中有两个地方需要在运行时使用相同的值进行更新。类似于:您可以在同一模板中复制dojo-data-attach-points吗?

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

回答

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

+0

感谢您的确认和建议,Dimitri。 – 2013-03-19 13:06:16

相关问题