2012-03-05 66 views

回答

13

如果您需要從客戶端腳本訪問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可變設置爲正確的值。

8

你不能直接訪問viewScope變量,但你可以將其綁定到一個隱藏字段 然後訪問通過csjs XSP.getElementById( 「#{ID:inputHidden1}」)的價值。價值

還有其他方式可以訪問它,使用類似rpc或ajax請求。

+0

被隱藏,這將是在CSS方面,而不是在XPage中結束。否則它不會呈現給客戶端。 – 2012-03-05 15:16:23

+1

那麼它通過html中的隱藏類型的輸入標籤隱藏它,所以它呈現像這樣。 2012-03-05 15:34:15

0

如果您需要頻繁更新,您可以使用擴展庫中的Ajax服務。

3

我會看看擴展庫中包含的JSON RPC。這個組件將允許你定義一個可能/不可以接受參數的SSJS函數。假設您添加一個ID爲myRPC的RPC和一個名爲getViewScopeVar的方法,該方法接受一個String參數,並返回viewScope變量的值與您作爲參數包含的名稱。然後,您可以調用這樣的方法:

myRPC.getViewScopeVar("branchName") 

這是從客戶端的JavaScript服務器端元素進行交互的最簡單最有效的方法。此外,只要您將該RPC放置在一個戰略性的自定義控件上(即像每個xpage所基於的佈局自定義控件一樣),就可以讓您選擇所有必需的方法。

6

使用下面的代碼:

var value = "#{javascript:viewScope.variablename}"