關於ItemRenderers的一個問題:比方說,我有一個ArrayCollection,它是我的應用程序數據坐在全局對象內。我使用這些數據填充一個火花列表,將ArrayCollection設置爲dataProvider。Flex 4.6 Mobile - ItemRenderer和應用程序數據
因此,每個ItemRenderer獲得一個位於數組中的項目的副本。您可以覆蓋「設置數據」方法,將數據設置爲更多特定於域的內容。問題是數據是原始項目的副本。
現在我們假設我們想在ItemRender中添加一些數據到物品。例如,它可以調用項目上的方法,告訴它加載一些關於它自己的細節,或者我們允許用戶修改項目上的某些內容。
顯然,如果我們在複製上進行操作,我們無法做到這一點,因爲只要ItemRenderer被銷燬並且原始對象不知道發生了什麼,它就會被丟棄。
那麼最佳做法是什麼?如果我只是使用的ItemIndex渲染的從我的全球陣列拉出原始項目是這樣的:
{} globalArrayCollection .getItemAt(this.itemIndex)
但對我來說似乎有點笨重。有處理這個問題的最佳做法嗎?
是的,你完全理解了這個問題,是的,這與我提出的解決方案是一樣的。但是你總是需要在兩個地方修改代碼。不是理想的解決方案,但可能是唯一可能的解決方案。我會等幾天看看有人能提供更好的解決方案,否則我會將其標記爲已回答。謝謝 – Andy 2012-03-20 10:10:59
您可以將ArrayCollection的實例傳遞給setSomeValue方法,並讓該函數更新兩個 – francis 2012-03-20 12:00:20
。但是,該實例將是原始數據的副本。同樣的問題。我希望在一個全球性的地方只有一份數據,這太難以問了嗎? :-) – Andy 2012-03-20 14:51:58