Apache flex Flex 4——数据提供程序更改时调用函数

Apache flex Flex 4——数据提供程序更改时调用函数,apache-flex,flex4,dataprovider,Apache Flex,Flex4,Dataprovider,如何设置在数据提供程序的长度更改时调用的函数?下面是一个使用事件“CollectionEvent.COLLECTION\u CHANGE”的好解决方案: 如果使用ICollectionView(也称为ArrayCollection),则可以为“collectionChange”事件添加事件侦听器 文件: 如果您在MXML文档中,UI组件的dataProvider属性应该是数据绑定的源。因此,如果是这样的用例,您可以{myComponent.dataProvider.length}将该值绑定到其他

如何设置在数据提供程序的长度更改时调用的函数?

下面是一个使用事件“CollectionEvent.COLLECTION\u CHANGE”的好解决方案:


如果使用ICollectionView(也称为ArrayCollection),则可以为“collectionChange”事件添加事件侦听器

文件:


如果您在MXML文档中,UI组件的dataProvider属性应该是数据绑定的源。因此,如果是这样的用例,您可以{myComponent.dataProvider.length}将该值绑定到其他值。

我可以通过的唯一方法是在actionscript代码中进行绑定。大概是这样的:

protected function creationCompleteHandler(event:FlexEvent):void {
    BindingUtils.bindSetter(myHandleFunction, myList, "dataProvider");
}

myHandleFunction通过参数接收绑定属性类型的对象。

我尝试将此事件侦听器添加到列表中,但未调用它。将其添加到列表的数据提供程序后,它被调用了一次,但在多次更改后没有被调用。能否在问题中添加一些代码?实际上,您应该将事件侦听器添加到数据提供程序中。检查您是否在任何时候都不创建新的数据提供程序,在这种情况下,新的提供程序将不会保留事件订阅。我使用的是两个列表的拖放。这有点类似于这里的第二个示例:如果在运行时设置了一个新的数据提供程序,您将不得不重新添加集合\u更改侦听器,但这将很棘手,因为数据组不提供事件或通知,说明有人已将其设置为新的数据提供程序。我会寻找一个更优雅的解决方案。