2011-06-16 120 views
0

我使用自定義項目渲染器的火花ListdataProviderArrayCollection通過項目渲染器編輯ArrayCollection

的itemRenderer看起來像

<mx:TextInput id="txtValue1" text="{data.myFirstValue}"/> 
<mx:TextInput id="txtValue2" text="{data.mySecondValue}"/> 

然而,即使我改變文本的txtValue1txtValue2,這些實際上並沒有在裏面的ArrayCollection對象改變。

myFirstValuemySecondValue裝飾有[Bindable]標籤。

我的理解是,如果text屬性設置爲綁定某個屬性,應該自動應用更改。

所以HACK(或因此我認爲),我用的是聽focusOut事件的每個文本框,並訪問父數據提供者和手動設置的值。

我在做什麼錯?它應該像這樣工作嗎?

或者我明白了什麼錯誤?

回答

2

默認情況下,flex中的綁定是單向的。換句話說,您的data對象中的更改會在UI中更新,但不會以其他方式更新。

您需要使用雙向綁定。從Flex 4.0開始,這非常簡單。注意使用「@」符號的:

<mx:TextInput id="txtValue1" text="@{data.myFirstValue}"/> 
<mx:TextInput id="txtValue2" text="@{data.mySecondValue}"/> 

現在,到TextInput所做的任何更改將獲得下推到data對象也是如此。

查看更多about Two way data binding

+0

該死! :噢,這實際上是訣竅!哦,爲什麼我以前不知道這件事! :S太感謝了! – 2011-06-16 10:11:03

+0

@Brian:我更新了你的答案以提供更多信息。希望你不要介意:) – 2011-06-16 10:21:14

+0

@Ranhiru:我刪除了「使用雙向綁定時要小心,因爲最初爲空的TextInput等可以清除數據模型中的數據。」因爲我不確定我是否理解它......我始終使用雙向綁定,但從未遇到過這樣的問題。在什麼情況下會發生? – 2011-06-16 11:02:04