Редактировать 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 объект также.

Узнайте больше о двухстороннем связывании данных.

Другие вопросы по тегам