Dans Flex, j'ai un document XML tel que:XML Edition dans Flex à l'aide e4x
var xml:XML = <root><node>value1</node><node>value2</node><node>value3</node></root>
Lors de l'exécution, je veux créer un contrôle TextInput pour chaque noeud sous la racine, et ont les valeurs liés aux valeurs dans le XML. Pour autant que je peux dire que je ne peux pas utiliser BindingUtils pour se lier à e4x noeuds lors de l'exécution (s'il vous plaît me dire si je me trompe!), Donc je suis en train de le faire à la main:
for each (var node:XML in xml.node)
{
var textInput:TextInput = new TextInput();
var handler:Function = function(event:Event):void
{
node.setChildren(event.target.text);
};
textInput.text = node.text();
textInput.addEventListener(Event.CHANGE, handler);
this.addChild(pileHeightEditor);
}
Mon problème est que lorsque l'utilisateur édite l'une des TextInputs, le nœud assigné est toujours le dernier rencontré dans la boucle for. Je suis habitué à ce modèle de C#, où chaque fois qu'une fonction anonyme est créée, un "instantané" des valeurs des valeurs utilisées est pris, ainsi "node" serait différent dans chaque fonction de gestionnaire.
Comment puis-je "prendre un instantané" de la valeur actuelle du noeud à utiliser dans le gestionnaire? Ou devrais-je utiliser un modèle différent dans Flex?