2010-06-24 125 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) } 
} 

功能,但它可以是有時有點乏味。這真的取決於你想要完成的事情。