您可以使用 Tree 的 labelField 属性来指定您希望哪个属性成为每个节点的标签。
在您的示例中,这将为您提供单级 Tree:
<mx:Tree id="tree" dataProvider="{ac}" labelField="item" />
这些链接应该可以帮助您:
编辑:您创建的ArrayCollection 包含对象,每个对象都将组与项目匹配。如果你想使用Tree,你需要从上到下分层思考。
最上面的对象将是您的“组”,由代表“项目”的对象组成。在您的ArrayCollection 中,每个索引都需要是Object,而Object 又包含任何嵌套的子级。请注意:每个对象必须在名为“children”的属性中指定其嵌套子级。
例如:
{name: "Animals", children: new ArrayCollection([ {name: "Dog"}, {name: "Cat"} ])}
因此,这个“对象”是分层结构的:
对象:动物
|
|-- 儿童
|
狗
|
猫
从这里开始,Dog 和Cat 对象也可以有一个children 属性,指向另一个ArrayCollection。这有意义吗?
注意每个对象如何包含相同的标识符。在这种情况下,我使用“名称”作为将在Tree 中显示的标签。您还可以使用labelFunction 属性定义一个返回String 的函数,从而可以确定给定节点在运行时的标签。
我把你的ArrayCollection 打包成一个简单的应用程序,显示为Tree。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable] public var ac:ArrayCollection= new ArrayCollection([
{ name: "Animals", children: new ArrayCollection([ {name: "dog"}, {name: "cat"}])},
{ name: "Fruits", children: new ArrayCollection([ {name: "orange"}, {name: "apple"} ])}]);
]]>
</mx:Script>
<mx:Tree dataProvider="{ac}" labelField="name" />