Modifier l'arraycollection via le rendu à l'article
-
28-10-2019 - |
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?
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.