Flexには、次のようなxmlドキュメントがあります。
var xml:XML = <root><node>value1</node><node>value2</node><node>value3</node></root>
実行時に、ルートの下のノードごとにTextInputコントロールを作成し、値をXMLの値にバインドします。私が知る限り、実行時にBindingUtilsを使用してe4xノードにバインドすることはできません(ここで間違っているかどうか教えてください!)ので、これを手動で実行しようとしています:
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);
}
私の問題は、ユーザーがTextInputsの1つを編集すると、割り当てられるノードが常にforループで最後に検出されるノードになることです。私はC#のこのパターンに慣れています。匿名関数が作成されるたびに、使用される値の値の「スナップショット」が取得されるため、「ノード」はハンドラー関数ごとに異なります。
ハンドラーで使用するノードの現在の値の「スナップショットを作成」するにはどうすればよいですか?または、Flexで別のパターンを使用する必要がありますか?