我有一个相当复杂的SSJS片段,用于确定ul类中的特定药丸=" nav nav-pills"导航器此刻SSJS将viewScope.vsPillVisible设置为true或false。到现在为止还挺好。现在我该怎么做药丸。现在假设药丸清单看起来像这样:
<ul class="nav nav-tabs">
<li class="active"><a href="#">Home</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown” href="#">Menu 1
<spanclass="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Submenu 1-1</a></li>
<li><a href="#">Submenu 1-2</a></li>
<li><a href="#">Submenu 1-3</a></li>
</ul>
我现在想要隐藏下拉选项卡,如果vsPillVisible == false我认为我需要设置一个属性,但不确定是否可以在SSJS中完成,然后设置要设置的属性。 任何帮助表示赞赏。
答案 0 :(得分:1)
您可以将SSJS代码添加到通常以<xp:
,<xe:
或<xc:
开头的代码中。它们被渲染(= html发送到浏览器)到其他东西,或者如果render属性返回false,则可能根本不渲染。
您的相关代码只是html,会按原样发送到浏览器。您现在的问题是如何根据viewScope变量隐藏部分HTML代码。
一种常见的方法是通过<xp:panel>
... </xp:panel>
围绕部分XPage / html标记。
您可以将渲染属性添加到此类面板,并根据SSJS代码有条件地渲染整个块。在你的情况下,它可能看起来像这样
<ul class="nav nav-tabs">
<li class="active"><a href="#">Home</a></li>
<xp:panel rendered="#{viewScope.vsPillVisible}">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown” href="#">Menu 1
<span class="caret"></span></a>
<ul class="dropdown-menu">
...
</ul>
</li>
</xp:panel>
...
</ul>
如果viewScope.vsPillVisible为false,则不会呈现整个<li class="dropdown">
... </li>
块(=发送到浏览器)。
通常,小组代码<xp:panel>
... </xp:panel>
会呈现给<div>
... </div>
。如果您不想这样,只需在面板标记中添加属性disableOutputTag="false"
。