我正在使用XMLLIST作为数据提供程序处理树组件。
<list>
<menuItem label="Home" menuItemId="1" >
<menuItem label="Info 1" menuItemId ="4"></menuItem>
</menuItem>
<menuItem label="Services" menuItemId="2" >
</menuItem>
<menuItem label="About" menuItemId="3" >
</menuItem>
</list>
我需要通过属性'menuItemId'选择一个嵌套节点,而不需要知道索引。例如,选择带有menuItemId 4的项目。
有什么想法吗?
答案 0 :(得分:0)
使用E4X。例如,
var myList:XMLList = <list>
<menuItem label="Home" menuItemId="1" >
<menuItem label="Info 1" menuItemId ="4"></menuItem>
</menuItem>
<menuItem label="Services" menuItemId="2" >
</menuItem>
<menuItem label="About" menuItemId="3" >
</menuItem>
</list>;
var menuItemId4:XMLList = myList.menuItem.(@menuItemId==4);
答案 1 :(得分:0)
尝试这样的事情,过滤树的数据提供者以找到正确的对象,然后在数据提供者中获取对象的索引并告诉树选择该项。这似乎是一种迂回的方式,但我认为这是我现在能想到的最好的方法。
var filter:Array = tree.dataProvider.toArray().filter(filterFunc)
if (filter.length > 0)
tree.selectedIndex = tree.dataProvider.getItemIndex(filter[0]);
protected function filterFunc(item:*, index:int, array:Array):Boolean{
return (item as MenuItem).menuItemId == "2"
}