I have a custom component that extends the spark list.
Inside that custom list, I’m looking to declare a public function that can be called from the main application to filter the result of the list using filterFunction.
My problem is I have multiple filters and I need to pass the function name from the main application as a string ( Or by another way I will learn today! 🙂 ) like this :
My custom list
<s:List xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" dataProvider="{listView}">
<fx:Script>
<![CDATA[
public function applyFilter(functionName:String):void
{
listView.filterFunction = functionName as Function // <-- THIS DOESN'T WORK;
listView.refresh();
}
private function myFilter(obj:Object):Boolean
{
// Execution code
}
private function anotherFilter(obj:Object):Boolean
{
// Execution code
}
]]>
</fx:Script>
Call from my main app
<fx:Script>
<![CDATA[
private function callMyCustomListFilter():void
{
myCustomList.applyFilter('myFilter');
}
]]>
No error, nothing. The filterFunction is just not executed… Can somebody help? Thanks a lot!
Pass the function as a function. Your apply filter function would be something like this:
Then your parent container of the list would have something like this:
I didn’t notice you had the filter functions inside the list component. But, you can make them public and pass them in the same way:
And this: