Można użyć właściwości labelField
drzewa, aby określić, która właściwość ma być etykietą dla każdego węzła.
W przykładzie byłoby to daje jednopoziomowych Tree
:
<mx:Tree id="tree" dataProvider="{ac}" labelField="item" />
Te linki powinny ci pomóc:
Edytuj: Utworzony przez ciebie obiekt ArrayCollection
zawiera obiekty, z których każdy dopasowuje grupy do elementów. Jeśli chcesz użyć modelu Tree
, musisz myśleć hierarchicznie, od góry do dołu.
Najwyższymi obiektami będą twoje "grupy" składające się z obiektów reprezentujących "przedmioty". W twoim ArrayCollection
każdy indeks musi być Object
, który z kolei zawiera zagnieżdżone elementy potomne. Uwaga: każdy obiekt musi mieć zagnieżdżone elementy potomne określone we właściwości o nazwie "dzieci".
Na przykład:
{name: "Animals", children: new ArrayCollection([ {name: "Dog"}, {name: "Cat"} ])}
Ten `Obiekt ten sposób zorganizowany hierarchicznie:
obiektu: Zwierzęta
|
| - dzieci
|
Dog
|
Cat
Stąd te Dog
i Cat
obiekty mogą również mieć właściwość children
, wskazując na kolejny ArrayCollection
. Czy to ma sens?
Zobacz, jak każdy obiekt zawiera ten sam identyfikator. W tym przypadku użyłem "nazwy" dla etykiety, która będzie wyświetlana w Tree
. Można również użyć właściwości labelFunction
, aby zdefiniować funkcję, która zwraca wartość String
i tym samym określić, która etykieta dla danego węzła jest w czasie wykonywania.
Wziąłem twój ArrayCollection
i w pakiecie go do prostej aplikacji, która wyświetla go jako 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" />
Próbowałem, ale to tylko wyświetla listę przedmiotów. Próbowałem ustawić labelField = "group", ale to tylko wyświetlało grupy (nie czyniło z nich węzłów, które można kliknąć, jako element potomny). Sprawdzę opublikowane linki. – jtorrance
Należy pamiętać o jednej rzeczy: nie ma zagnieżdżonej struktury obiektów (np. Obiektów osadzonych w/w obiektach). W rezultacie twoje "drzewo" będzie wyglądać płasko, ponieważ ma tylko jeden poziom. Zamieszczone przykłady pokazują, jak zagnieżdżać obiekty w/w obiektach, aby uzyskać hierarchiczny widok. – bedwyr
Czy naprawdę pokazują, jak wygenerować hierarchiczną strukturę z danych płaskich/pogrupowanych? Pierwszy link wydaje się (sztucznie) dodawać węzły "dzieci" do tablicy, podczas gdy drugi zaczyna się od zbudowania hierarchicznej struktury ArrayCollection. Czy czegoś brakuje? – jtorrance