我使用自定义项呈示器的spark List
和ArrayCollection
的{{1}}。
ItemRenderer看起来像
dataProvider
但是,即使我更改了<mx:TextInput id="txtValue1" text="{data.myFirstValue}"/>
<mx:TextInput id="txtValue2" text="{data.mySecondValue}"/>
或txtValue1
中的文本,但实际上并未在ArrayCollection中的对象中更改这些文本。
txtValue2
和myFirstValue
使用mySecondValue
标记进行修饰。
我的理解是,如果将[Bindable]
属性设置为绑定某个属性,则应自动应用更改。
所以我使用的 HACK (或者我认为)是收听每个文本框的text
事件,并访问父数据提供程序并手动设置值。
我做错了什么?它应该像这样工作吗?
或者我理解错了什么?
答案 0 :(得分:2)
默认情况下,flex中的绑定是单向的。换句话说,您的data
对象中的更改会在UI中更新,但不会相反。
您需要使用双向绑定。从Flex 4.0开始,这非常简单。注意使用“@”符号:
<mx:TextInput id="txtValue1" text="@{data.myFirstValue}"/>
<mx:TextInput id="txtValue2" text="@{data.mySecondValue}"/>
现在,对TextInput
所做的任何更改都会被推送到data
对象。
详细了解Two way data binding。