Apache flex Flex:如何在加载组件之前检索数据?

Apache flex Flex:如何在加载组件之前检索数据?,apache-flex,data-binding,actionscript,components,mxml,Apache Flex,Data Binding,Actionscript,Components,Mxml,在我的flex应用程序中,我的自定义类AudLogDataGrid具有一个呈现器函数,该函数在将数据传递给呈现器之前获取数据列表并对其进行过滤: private function rendererFunction(item:Object, grid:Object):ClassFactory { var itemRenderer:ClassFactory = new ClassFactory(AudActionDropDownIR);

在我的flex应用程序中,我的自定义类AudLogDataGrid具有一个呈现器函数,该函数在将数据传递给呈现器之前获取数据列表并对其进行过滤:

        private function rendererFunction(item:Object, grid:Object):ClassFactory {  
            var itemRenderer:ClassFactory = new ClassFactory(AudActionDropDownIR);
            var FilteredAudActionData:ArrayCollection = new ArrayCollection(AudActionData.toArray());
            ASTDForRow = item.AUD_STEP_TYPE_ID;
            FilteredAudActionData.filterFunction = filterTheData;
            FilteredAudActionData.refresh();
            (itemRenderer as AudActionDropDownIR).TheData = FilteredAudActionData;
            return itemRenderer;
        }
使用类父级中的自定义HTTPService从远程xml文件检索已排序的AudActionData IList,然后将其作为数据绑定传递:

<components:AudLogDataGrid id="AudLogGrid" y="131" left="10" right="10"
                           AudLogGridSelectionChange="AudLogGrid_AudLogGridSelectionChangeHandler(event)"
                           TheData="{getAudLogsResult.lastResult}"
                           AudActionData="{getAudActionsResult.lastResult}"/>

但是,RenderFunction在从服务器完全检索数据之前运行!有没有办法绕过这个问题而不将AudLogDataGrid声明为

谢谢

试试这个:

protected var filteredStuff:XMLListcollection = new XMLListCollection;
protected var cf:ClassFactory = new ClassFactory(AudActionDropDownIR);
protected function creationComplete():void {//call from creationComplete "property" in MXML
    cf.properties= {TheData:filteredStuff};
    filteredStuff.filterFunction = filterTheData;//suggest you use e4x instead, but I can't give exact syntax without seeing your filterFunction
}

//when the data is returned:
protected function gotTheData(e:ResultEvent):void {
    filteredStuff.source = e.result.children as XMLList;
}
在AudLogGrid MXML中,只需将cf设置为itemRenderer。XMLListCollection应该处理对任何引用它的内容的传播更改(现在所有的呈现器都应该这样做)。这比每次需要呈现器时实例化一个新的类工厂占用的内存要少得多

顺便说一句,您可以重写生命周期方法,而无需将整个组件写入AS