2011-07-28 59 views
1

在main.mxml我有一大堆爲textInput的控制組合框和我想能夠清除與某種循環的少數幾個複選框。現在,我不喜歡這樣寫道:尋找更有效的方法來清除控制

public function clearAll():void 
{ 
    customerIDInput.text = ""; 
    listIDCombo.selectedItem = ""; 
    listVersionInput.text = ""; 
    suppressMasterFilesInput.text = ""; 
    priorOrderSuppressInput.text = ""; 
    onePerSelectInput.text = ""; 
    geoCountOptionsInput.text = ""; 
    keyCodeInput.text = ""; 
    nthSelectInput.text = ""; 
    geoTypeInput.text = ""; 
    geoValueFromInput.text = ""; 
    latitudeInput.text = ""; 
    longitudeInput.text = ""; 
    begRadiusInput.text = ""; 
    endRadiusInput.text = ""; 
    geoSelectOmitCheck.selected = false; 
    fieldIDInput.text = ""; 
    fieldValueInput.text = ""; 
    fieldSelectOmitCheck.selected = false; 
    outputFieldCheck.selected = false; 
} 

我讀了SO一個帖子說recomended添加控件與creationComplete事件的ArrayCollection。我想,它工作得很好,但它不是任何比我現在有更多的優雅。所有這些控件都是mxml格式,並不是由AS生成的。我也嘗試循環是這樣的:

for each (var ctrl:UIComponent in Application) 
{ 
    switch(ctrl.className) 
    { 
    case TextInput: 

我不能讓過去的那部分雖然。我無法找到引用控件值的方法。有人知道嗎?

回答

3

我可能做到這一點,你做的方式。有沒有這樣做的強制性理由?鑑於命名規則,我猜你定義控制在編譯時一個明確的數字。它似乎沒有你未知的號碼。

你可以制定出一個循環組件的所有孩子:

for (var index:int=0;this.numChildren ; x++){ 
var component : UIComponent = this.getChildAt(index) as UIComponent; 
if(component is TextInput){ 
    component.text = ''; 
} else if (component is ListBase){ 
    component.selectedIndex = null; 
} 
// etc for other comp types 
} 

但是,它似乎就像是增加不必要的處理;使你的代碼難以發展;更難讀。

+0

真的,我是想限制的代碼行數。您的解決方案將使我周圍的10條線路,比我目前的解決方案少50%。但我明白你在說什麼;我的方式非常清楚它應該做什麼。 – smulholland2

+1

@totbar不要害怕有更多的代碼,特別是如果它使事情更容易理解和維護。選擇任何給定的設計模式;我可以保證我可以用較少的代碼完成同樣的事情。它可能不會像可擴展的,可理解的或可維護的。 – JeffryHouser

相關問題