Puede usar la propiedad labelField
del Árbol para determinar qué propiedad quiere que sea la etiqueta de cada nodo.
En el ejemplo, esto le daría a un solo nivel Tree
:
<mx:Tree id="tree" dataProvider="{ac}" labelField="item" />
Estos enlaces pueden serle de ayuda:
Editar: el ArrayCollection
que ha creado contiene objetos, cada uno de los cuales combina grupos con elementos. Si desea utilizar un Tree
, debe pensar jerárquicamente, de arriba a abajo.
Los objetos que se encuentran en la parte superior serán sus "grupos", formados por objetos que representan los "elementos". En su ArrayCollection
, cada índice deberá ser un Object
que, a su vez, contiene los elementos secundarios anidados. Tenga en cuenta: cada objeto debe tener sus hijos anidados especificados en una propiedad llamada "hijos".
Por ejemplo:
{name: "Animals", children: new ArrayCollection([ {name: "Dog"}, {name: "Cat"} ])}
Este objeto `se estructura de forma jerárquica:
objeto: Animales
|
| - los niños
|
perro
|
gato
Desde aquí, los Dog
y Cat
objetos también podría tener una propiedad children
, señalando al otro ArrayCollection
. ¿Esto tiene sentido?
Observe cómo cada objeto contiene el mismo identificador. En este caso, utilicé "nombre" para la etiqueta que se mostrará en el Tree
. También puede usar la propiedad labelFunction
para definir una función que devuelve String
y así poder determinar cuál es la etiqueta de un nodo dado en tiempo de ejecución.
Tomé su ArrayCollection
y lo incluí en una aplicación simple que lo muestra como 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" />
Lo intenté pero eso solo enumera los artículos. Intenté establecer labelField = "group" pero eso solo incluía los grupos (no los convertía en nodos clicables con los elementos como secundarios). Revisaré los enlaces que publicaste. – jtorrance
Una cosa a tener en cuenta es que no tiene una estructura de objeto anidado (es decir, objetos incrustados con objetos). Como resultado, su "árbol" se verá plano porque solo tiene un único nivel. Los ejemplos que publiqué muestran cómo anidar objetos con objetos para que pueda obtener la vista jerárquica. – bedwyr
¿Realmente muestran cómo generar una estructura jerárquica a partir de datos planos/agrupados? El primer enlace simplemente parece (artificialmente) agregar nodos "secundarios" a la matriz, mientras que el segundo comienza construyendo una ArrayCollection estructurada jerárquicamente. ¿Me estoy perdiendo de algo? – jtorrance