我有一个由包含模型类实例的 ArrayCollection 传播的列表。该模型类具有对保存库存值的字典的类引用。自然,这些值会不断刷新。
当我将排序函数应用于 ArrayCollection 时,我确实得到了正确的排序,但是排序函数不断运行,但我只需要它运行一次。因此,在第一次对 ArrayCollection 进行排序后,排序应该立即停止。
单击标题按钮会触发我的排序功能(我正在开发针对移动设备优化的基于列表的 DataGrid,因此不仅不需要不断对 ArrayCollection 进行排序,而且还需要太多性能),如下所示:
private function headerClick(event:MouseEvent):void {
sField = event.currentTarget.id;
var sort:Sort = new Sort();
sort.compareFunction = fidSort;
(_list.dataProvider as ArrayCollection).sort = sort;
(_list.dataProvider as ArrayCollection).refresh();
}
private function fidSort(a:Object, b:Object, fields:Array = null):int {
if(a.fidList.fidMap[sField].fieldValue == b.fidList.fidMap[sField].fieldValue) {
return 0;
} else if(a.fidList.fidMap[sField].fieldValue > b.fidList.fidMap[sField].fieldValue) {
return 1;
} else{
return -1;
}
}
那么,除了简单地在函数末尾放置一个布尔值来停止排序之外,还有其他方法可以停止排序过程吗?这意味着该函数仍会随着值的每次更新而被调度,这是一种相当不受欢迎的行为。