2010-06-24 67 views
1

我有几个TextInputs以某种形式已经按增量顺序分配了id。例如:基于某些条件在flex函数中传递参数

<s:TextInput id = "index1"/> 
<s:TextInput id = "index2"/> 
<s:TextInput id = "index3"/> 

我请从相应的TextInput文本和传递值(索引#的.text)成函数

foo(var index:String) 

如果我有限于TextInput之一我本来可以用:

foo(index1.text) 

有人可以建议我怎么可以通过textInput使用其ID。

谢谢。

-H

+1

我认为你需要详细说明你的意思是“某些条件”。这看起来像我会使用事件的类型,但我无法确定您的意思。 – Robusto 2010-06-24 18:07:34

回答

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) } 
} 

功能,但它可以是有时有点乏味。这真的取决于你想要完成的事情。