我有一些特定形式的TextInputs,它们已按增量顺序分配了id。例如:
<s:TextInput id = "index1"/>
<s:TextInput id = "index2"/>
<s:TextInput id = "index3"/>
根据某些条件,我从相应的TextInput中选择文本,并将值(index#.text)传递给函数
foo(var index:String)
如果我只使用了一个我可以使用的TextInput:
foo(index1.text)
有人可以建议我如何使用其id传递textInput。
谢谢。
-H
答案 0 :(得分:0)
我加上一个'某些条件'的请求。您发布了一个事实,即您无法按名称访问该组件,因此我正在根据该假设编写其余部分。
要访问组件的值并将该组件的参数传递给函数,您需要一个标识符或链接到该组件。如果您使用组件名称,这是最简单的。但是,这并非总是可行的。例如,Flextras日历组件创建并显示该月的日期。根据显示的月份,可能有28天,30天或31天。用唯一的名称访问它们是不切实际的。
这是ListBased类中的类似情况。在编译时,您不会知道您一次需要或拥有多少itemRenderer。
解决此问题的一种方法是拥有相关对象的数组(dayRenderers,itemRenderers,或者在您的情况下为TextInputs)。在进行处理时,您可以遍历数组并处理元素。像这样:
for (var x = 0; x<objectArray.length; x++){
foo(objectArray[x].text);
}
如果您不希望这样做,无论出于何种原因,您可以循环容器的子代,执行以下操作:
for (var x = 0; x<container.numChildren; x++){
var object : Object = this.getChildat(x);
if(object is TextInput){ foo(object.text) }
}
功能性,但有时可能有点单调乏味。这真的取决于你想要完成的事情。