在 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 中使用不同的模式?