Domanda

Utilizzo uno spark List con un renderer di elementi personalizzato e un ArrayCollection per dataProvider.

ItemRenderer ha un aspetto simile a

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

Tuttavia, anche se cambio il testo in txtValue1 o txtValue2, questi non vengono effettivamente modificati nell'oggetto all'interno di ArrayCollection.

myFirstValue e mySecondValue sono decorati con il tag [Bindable].

Da quanto mi risulta, se la proprietà text è impostata per essere associata a una determinata proprietà, le modifiche dovrebbero essere applicate automaticamente.

Quindi l ' HACK (o almeno così credo) che uso è ascoltare l'evento focusOut di ciascuna casella di testo, accedere al fornitore di dati genitore e impostare i valori manualmente.

Cosa sto facendo di sbagliato?Dovrebbe funzionare così?

O cosa ho capito male?

È stato utile?

Soluzione

Per impostazione predefinita, il binding in flex è unidirezionale.In altre parole, le modifiche nell'oggetto data vengono aggiornate nell'interfaccia utente ma non viceversa.

È necessario utilizzare la rilegatura a 2 vie.Questo è molto semplice da Flex 4.0.Notare l'uso del segno "@":

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

Ora, qualsiasi modifica apportata al TextInput verrà trasferita anche all'oggetto data.

Ulteriori informazioni sull ' Associazione dati bidirezionale .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top