在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上发布了一篇文章,建议使用creationComplete事件将控件添加到ArrayCollection中。我试过了,它工作得很好,但它没有比我现在更优雅。所有这些控件都是mxml格式,而不是我用AS生成的。我也试过像这样的循环:
for each (var ctrl:UIComponent in Application)
{
switch(ctrl.className)
{
case TextInput:
虽然我无法超越那一部分。我找不到引用控件值的方法。有人知道吗?
答案 0 :(得分: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
}
但是,似乎你正在加入过度的处理;使你的代码更难开发;并且更难阅读。