我在服务器端javascript(SSJS)按钮中设置了一个viewScope变量。
viewScope.put(" BRANCHNAME",doc.getItemValueString(" BRANCHNAME&#34))
如何在客户端访问该变量?
答案 0 :(得分:14)
如果需要从客户端脚本访问viewScope变量,可以使用xp:scriptBlock标记设置许多全局javascript变量。
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[var myVar = #{javascript:viewScope.get("scopeVar")}]]></xp:this.value>
</xp:scriptBlock>
此方法的主要问题是内部服务器端javascript仅在最初呈现该元素或在元素上执行部分刷新时计算,因此无法保证客户端JS变量设置为正确的价值。
答案 1 :(得分:9)
您无法直接访问viewScope变量,但可以将其绑定到隐藏字段 然后通过csjs访问该值 XSP.getElementById( “#{ID:inputHidden1}”)。值
还有其他方法可以使用rpc或ajax请求等方式访问它。
答案 2 :(得分:6)
使用以下代码:
var value = "#{javascript:viewScope.variablename}"
答案 3 :(得分:5)
我将看一下扩展库中包含的JSON RPC。此组件将允许您定义可能/可能不接受参数的SSJS函数。假设你添加了一个带有myRPC ID的RPC和一个名为getViewScopeVar的方法,它接受一个String参数,并返回viewScope变量的值,并带有你作为参数包含的名称。然后,您可以调用该方法,如:
myRPC.getViewScopeVar("branchName")
这是从客户端javascript与服务器端元素进行交互的最简单最有效的方法。只要您将RPC放在战略自定义控件上(例如每个xpage所基于的布局自定义控件),它就可以让您选择将所有必需的方法放在一个位置。
答案 4 :(得分:0)
如果您需要频繁更新,可以使用扩展库中的Ajax服务。