Question

J'utilise une étincelle List avec un rendu d'article personnalisé et un ArrayCollection pour dataProvider.

L'objet-Srenderer ressemble à quelque chose comme

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

Cependant, même si je change le texte dans txtValue1 ou txtValue2, ceux-ci ne sont pas réellement modifiés dans l'objet à l'intérieur de l'arrayCollection.

myFirstValue et mySecondValue sont décorés avec le [Bindable] étiquette.

Ma compréhension est que si le text La propriété est définie pour être liée à une certaine propriété, les modifications doivent être appliquées automatiquement.

Alors le PIRATER (du moins je pense) que j'utilise est d'écouter le focusOut Événement de chaque zone de texte, et accédez au fournisseur de données parent et définissez les valeurs manuellement.

Qu'est-ce que je fais mal? Est-ce censé fonctionner comme ça?

Ou qu'est-ce que j'ai compris mal?

Était-ce utile?

La solution

Par défaut, la liaison dans Flex est à sens unique. En d'autres termes, des changements dans votre data L'objet est mis à jour dans l'interface utilisateur mais pas l'inverse.

Vous devez utiliser la reliure bidirectionnelle. C'est très facile depuis Flex 4.0. Remarquez l'utilisation du signe "@":

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

Maintenant, toutes les modifications apportées au TextInput sera poussé vers le bas vers le data objet aussi.

En savoir plus sur Liaison des données bidirectionnelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top