В 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, назначенный ему узел всегда является последним, встреченным в цикле for. Я привык к этому шаблону из C #, где каждый раз, когда создается анонимная функция, берется «снимок» значений используемых значений, поэтому «узел» будет отличаться в каждой функции-обработчике.
Как мне «сделать снимок» текущего значения узла для использования в обработчике? Или я должен использовать другой шаблон в Flex?