2010-06-24 5 views
1

У меня есть несколько TextInputs в определенной форме, которым присвоен идентификатор в инкрементном порядке. Например:Передача параметра в функции flex

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

Основываясь на определенных условиях я выбрать текст из соответствующего TextInput и передать значение (индекс # .text) в функцию

foo(var index:String) 

Если бы я был только один из TextInput Я мог бы использовать:

foo(index1.text) 

Может кто-нибудь предложить, как я могу передать textInput, используя свой идентификатор.

спасибо.

-H

+1

Я думаю, вам нужно подробно остановиться на том, что вы подразумеваете под «определенными условиями». Это похоже на то, для чего я буду использовать события, но я не могу быть уверен, что вы имеете в виду здесь. – Robusto

ответ

0

Я плюс один запрос на 'определенных условиях'. Вы публикуете упоминания о том, что вы не можете получить доступ к компоненту по имени, поэтому я пишу остальную часть этого на основе этого предположения.

Чтобы получить доступ к значениям компонента и передать параметры этого компонента в функцию, вам нужен идентификатор или ссылка на этот компонент. Это проще всего, если вы используете имя компонента. Но это не всегда возможно. Например, компонент Calendar Flextras создает и отображает дни месяца. В зависимости от месяца отображается 28, 30 или 31 день. Нецелесообразно обращаться к ним с помощью уникального имени.

Это аналогичная ситуация в классе ListBased. Вы не будете знать, во время компиляции, сколько itemRenderers вам понадобится или появится на экране за один раз.

Один из способов приблизиться к этому - иметь массив соответствующих объектов (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) } 
} 

Функциональная, но это может быть немного утомительно время от времени. Это действительно зависит от того, что вы пытаетесь выполнить.

Смежные вопросы