Frage

Ich verwende einen Funken-List mit einem benutzerdefinierten Elementrenderer und einen ArrayCollection für den dataProvider.

Der ItemRenderer sieht ungefähr so aus wie

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

Obwohl ich den Text in txtValue1 oder txtValue2 ändere, werden diese im Objekt in der ArrayCollection nicht geändert.

myFirstValue und mySecondValue sind mit dem [Bindable]-Tag versehen.

Meines Wissens nach sollten die Änderungen automatisch angewendet werden, wenn die Eigenschaft text so festgelegt ist, dass sie an eine bestimmte Eigenschaft gebunden ist.

Der HACK (oder so denke ich), den ich verwende, besteht darin, das focusOut-Ereignis jedes Textfelds abzuhören, auf den übergeordneten Datenprovider zuzugreifen und die Werte manuell festzulegen.

Was mache ich falsch?Soll es so funktionieren?

Oder was habe ich falsch verstanden?

War es hilfreich?

Lösung

Standardmäßig erfolgt die Bindung in Flex in eine Richtung.Mit anderen Worten, Änderungen an Ihrem data-Objekt werden in der Benutzeroberfläche aktualisiert, jedoch nicht umgekehrt.

Sie müssen eine bidirektionale Bindung verwenden.Dies ist seit Flex 4.0 sehr einfach.Beachten Sie die Verwendung des "@" - Zeichens:

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

Jetzt werden alle am TextInput vorgenommenen Änderungen auch auf das data-Objekt übertragen.

Lesen Sie mehr über Zwei-Wege-Datenbindung .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top