2014-02-24 71 views
0

我有一個運行計時器腳本的應用程序,它在超時時點擊一個操作按鈕。操作按鈕被顯示屏隱藏:無。在動作按鈕上,我通過onClick事件對panelButtonBar進行了部分刷新。除了onClick事件根據文檔的條件設置viewScope變量的部分內容之外,這一切都很好。 viewScope變量是vsIsLocked,可以是true或false。如果值爲true,我不希望panelButtonBar刷新。我創建了一個什麼都不做稱爲dummyField一個字段,添加了以下成局部刷新的定義:有條件地在XPage上進行部分刷新

(viewScope.get("vsIsLocked")) ? "dummyField" : "panelButtonBar" 

通過把dBar.info報表是由動作按鈕的onclick代碼中,我知道它按計劃運行,我也知道vsIsLocked的值從true更改爲false,但panelButtonBar不刷新。正如我所說的,如果我將條件語句取出並僅對刷新工作的panelButtonBar進行部分刷新,則條件部分刷新不會。我相信我的js是正確的。我試過了:

(viewScope.get("vsIsLocked")) ? "" : "panelButtonBar" 

但是然後部分刷新似乎運行爲總刷新。

+0

你可以用一個jsfiddle來進一步說明嗎?從一個比爾F.到另一個的問候。 –

+0

@BillF。到另一個 - 不知道你的意思。一切都適用於條件刷新的代碼。在選擇要刷新的元素的對話框中,選擇Secfify元素ID,然後不輸入panelButtonBar並選擇小鑽石並輸入上面的js。它非常簡單vsIsLocked是true或false,如果它是真的,刷新不真實的dummyField(只是一個佔位符),如果它是false刷新panelButtonBar。我可以讓它始終在panelButtonBar上進行部分刷新,但是如果是真的,沒有理由這麼做。 –

+0

他指的是http://jsfiddle.net/,它是測試和分享純粹的客戶端網頁代碼的好方法。由於這個特定的問題是服務器端行爲,在這種情況下不適用,但它是一個很好的工具。 –

回答

0

您可能會有點被「什麼時候刷新」。 (viewScope.get("vsIsLocked")) ? "dummyField" : "panelButtonBar"位於隱藏按鈕中,並在該按鈕刷新時進行計算。當你「按下」按鈕,但是你要麼刷新dummyField或panelButtonBar,而不是按鈕本身。所以你的狀況沒有得到評估。

你可以嘗試把你的隱藏按鈕放到panelButtonBar中,或者在包含兩者的東西上進行刷新。

更新
目標屬性只計算在頁面加載,所以你需要有一個按鈕,每一個爲你刷新目標硬有線和計算渲染性能。因此,每次刷新時都會向瀏覽器發送不同的按鈕。你可以爲目標使用帶參數數組的自定義控件,所以你只需要在你的UI中有一個控件

+0

該按鈕已呈現,但被顯示屏隱藏:無。我不認爲不「渲染」爲隱藏,我認爲它不在那裏,如果我想「隱藏」用戶的某些東西,我使用「display:none」,我不相信「渲染」應該等同於與隱藏。等式的另一部分是,如果我將「panelButtonBar」明確地放在部分刷新中,它就是這樣做的。我試圖阻止的問題是一些部分刷新。 –

+0

即使我在部分刷新中使用公式,「點擊」事件按計劃觸發,所以我認爲問題完全圍繞局部刷新公式的問題展開。我設置了一個測試情況,其中當用戶打開文檔(即文檔被鎖定)時,vsIsLocked爲true,然後我釋放文檔上的鎖定。下次單擊事件運行vsIsLocked爲false,但部分刷新沒有刷新panelButtonBar。 –

+0

從局部刷新中刪除公式,並用「panelButtonBar」替換它,重複上述過程。完全按照我所希望的方式工作,但是每「n」秒進行一次不必要的局部刷新。只是想剝離不必要的開銷。 –