我用flex创建一个mx:tree,它的数据提供者是一个数组集合。此外,此数组集合是使用数据库设置的。使用事件侦听器函数处理此过程。数据库异步地将数据返回到数组集合。这就是当启动flex应用程序时,数组收集未完全初始化的问题。因此,mx:tree是不完整的。以下是代码段:
protected function populateTreeNode(node:Object):void
{
if (node != null && node["className"] != "InventoryCategory") return;
var categoryId:Number = 0;
if (node != null)
categoryId = node["id"];
DAOUtil.loadAll("InventoryCategory", EventUtil.handleWithArgs(popoluateTreeNodeHandler, [node, "InventoryCategory"]), "categoryId", categoryId.toString());
DAOUtil.loadAll("InventoryItem", EventUtil.handleWithArgs(popoluateTreeNodeHandler, [node, "InventoryItem"]), "categoryId", categoryId.toString());
}
protected function popoluateTreeNodeHandler( event : Event , nodeCategory:Object, typeName:String): void
{
var items:Array = DAOUtil.getArray(event, typeName);
items = LangUtil.fromNameField(items);
if (nodeCategory != null)
nodeCategory["children"] = items;
else
inventoryArray.addAll(new ArrayCollection(items));
for each (var item:Object in items) populateTreeNode(item);
}
此函数尝试递归初始化数组集合,并在populateTreeNodeHandler函数的末尾完全初始化。但是当Flex应用程序启动时,它有时是不完整的。有没有解决这个问题的方法?
答案 0 :(得分:0)
问题得到解决。问题是两次完成数据提供程序数组。其中一个正确地使用类别项完成数组,而另一个清空数据提供程序数组。