Редактировать ArrayCollection с помощью средства визуализации элементов
Я использую искру List
с настраиваемым средством визуализации элементов и ArrayCollection
за dataProvider
,
ItemRenderer выглядит примерно так
<mx:TextInput id="txtValue1" text="{data.myFirstValue}"/>
<mx:TextInput id="txtValue2" text="{data.mySecondValue}"/>
Тем не менее, хотя я изменяю текст в txtValue1
или же txtValue2
на самом деле они не изменяются в объекте внутри ArrayCollection.
myFirstValue
а также mySecondValue
украшены [Bindable]
тег.
Я понимаю, что если text
свойство должно быть привязано к определенному свойству, изменения должны применяться автоматически.
Таким образом, HACK (или я так думаю), который я использую, это слушать focusOut
событие каждого текстового поля, и получить доступ к родительскому поставщику данных и установить значения вручную.
Что я делаю неправильно? Это должно работать так?
Или что я не так понял?
1 ответ
По умолчанию связывание в flex является односторонним. Другими словами, изменения в вашем data
Объект обновляется в пользовательском интерфейсе, но не наоборот.
Вам необходимо использовать двустороннюю привязку. Это очень просто, начиная с Flex 4.0. Обратите внимание на использование знака "@":
<mx:TextInput id="txtValue1" text="@{data.myFirstValue}"/>
<mx:TextInput id="txtValue2" text="@{data.mySecondValue}"/>
Теперь любые изменения, внесенные в TextInput
будет оттеснен к data
объект также.
Узнайте больше о двухстороннем связывании данных.