2014-10-30 57 views
2

我覺得我只是不瞭解XPage生命週期。我有一個xp:文本控件,其值爲viewScope.count。最初,這是空的。在xp:text之後,我有一個重複的操作,就是執行一個計算並返回一個對象數組作爲它的值。在重複的值部分結束時,我試圖用數組中的東西來更新xp:文本:從重複內更新XPage文本值?

viewScope.count = myArray.length;

儘管如此,xp:文本並未使用該值進行更新。這應該工作嗎?當我修改viewScope.count時,是否需要手動刷新xp:text? TIA!

+0

顯示代碼!您可能有時間挑戰 – stwissel 2014-10-31 03:05:05

回答

1

你應該能夠使用重複的索引給你一個計數。

enter image description here

+0

謝謝。我試圖簡化我的問題,但我可能已經簡化了太多。 repeat的值實際上是第二個數組,它不是我想要在文本控件中顯示的數組長度。計算第一個數組並在第二個嵌套重複中使用。對不起,如果這是令人困惑,但底線是隻使用索引在這種情況下不起作用。 (雖然我有點不清楚爲什麼這會起作用,但....)僅供參考,此代碼位於另一個網絡上,因此我無法粘貼它。 – 2014-10-30 18:29:29

+0

我不認爲我理解這個問題,然後抱歉。 – 2014-10-30 19:35:38

+0

沒關係,但我以前的評論歸結爲「我不能使用重複行索引」。總結一下:爲什麼不把viewScope數據綁定到xp:text會改變xp:text的值,還有另一個解決方案可以工作嗎?不過謝謝! – 2014-10-30 20:46:47

1

退一步重新思考的方法。在用於重複使用的代碼中,您可以更新外部的某個內容。

不看'是否行得通'我認爲'壞主意'。這種副作用使維護成爲一場噩夢(而且不是很MVC)。

更好的方法(恕我直言):

創建一個對象數據源。如果你對Java不熟悉,AFAIK可以是JSON對象。該對象將具有所有需要的屬性,用於重複播放和計數器顯示。它用作你的模型。

然後綁定重複和文本字段到模型,你很好。

有意義嗎?

+0

是的,我肯定願意有更好的設計!謝謝。你的想法聽起來像是一個好的設計原則。在xpage中你會建議創建一個對象數據源,它將成爲xp:text和repeat的模型?我最初把它放在重複中,因爲那是它主要使用的地方。 (此對象是通過頁面其他位置的表單元素指定的某些參數構建的;它基本上是搜索的結果。) – 2014-10-31 15:27:26

+0

頁面級別有一個類型對象數據源 - 與文檔數據源位置相同 – stwissel 2014-10-31 18:08:51