Obtenez la valeur de l'étiquette pour un leafNode dans une barre d'outils
-
20-12-2019 - |
Question
J'ai créé une barre d'outils avec un certain nombre de basicLeafNodes.Dans certains JS dans la propriété style, j'aimerais obtenir la valeur de l'étiquette pour le basicLeafNode.J'ai essayé this.label mais cela génère une erreur.Si je pouvais obtenir la valeur de l'étiquette, je pourrais alors écrire un bloc de code très généralisé qui serait le même pour chaque feuille de la barre d'outils.Ce qui serait plus facile à maintenir et à étendre.C'est loin d'être un spectacle mais ce serait bien,
La solution
Tu ne peux pas faire ça, parce que this
représente l'objet de la barre d'outils, pas le nœud feuille (c'est un seul objet géant).
Cependant, vous pouvez utiliser repeatTreeNode
et un peu de magie Javascript (ou de préférence un bean géré), toutes les valeurs peuvent être calculées et la gestion pourrait être plus facile à l'avenir.
<xe:toolbar id="toolbar1">
<xe:this.treeNodes>
<xe:repeatTreeNode var="item">
<xe:this.value><![CDATA[#{javascript:
[{
"label": "Open",
"href": "http://www.openntf.org"
},
{
"label": "Search",
"href": "http://www.google.com"
}]
}]]></xe:this.value>
<xe:this.children>
<xe:basicLeafNode href="#{item.href}" label="#{item.label}">
<xe:this.style><![CDATA[#{javascript:"color:"+(item.label=="Open"?"blue":"red")}]]></xe:this.style>
</xe:basicLeafNode>
</xe:this.children>
</xe:repeatTreeNode>
</xe:this.treeNodes>
</xe:toolbar>
J'espère que ça aide...