Flex ArrayCollection - доступ к объектным методам / атрибутам? - PullRequest
1 голос
/ 18 июня 2011

Может быть, я не понял истинного значения ArrayCollection, но прежде всего немного кода

public var test1:AkwRep = new AkwRep(1,200,200,2,86,2010,2012,334342,"Typ","Standort","Testname","url","owner",true);

// Objekte in ein Array
public var akwArray:Array = new Array(15);

public function addAkw():void {
    akwArray[0] = test1;
}

public var akwList:ArrayCollection = new ArrayCollection(akwArray);

(акв означает Атомкрафтверк -> АЭС;))

так что у меня есть массив с akwRep-Objects. Для привязки данных я поместил его в ArrayCollection. Пока проблем нет. Но теперь я хочу сделать что-то вроде

<s:Label text={akwList.getItemAt(0).getAkwName()} />

, а getAkwName - это метод в AkwRep.as, который возвращает строку. но это не сработало - я не могу получить доступ ни к каким методам или атрибутам через ArrayCollection.

Есть ли решение? Если я попробую это с массивом, то flexbuilder скажет, что не может связать данные с помощью akwArray [0] ...

Редактировать: новый код

Это в теге <fx:script> в моем главном приложении

[Bindable]
// AKW-Objekte erstellen
public var test1:AkwRep = new AkwRep(1,200,200,2,86,2010,2012,334342,"Typ","Standort","Testname","url","owner",true);

[Bindable]
// Objekte in ein Array
public var akwArray:Array = new Array(15);

public function addAkw():void {
    akwArray[0] = test1;
}

[Bindable]
public var akwList:ArrayCollection = new ArrayCollection(akwArray);

public function init():void{
    trace(akwList.getItemAt(0));
}

а это мой AkwRep.as

public class AkwRep
{
    // Attribute
    // some more attributes right here

    public var typ:String;
    public var standort:String;
    private var akwName:String;

    [Bindable]
    public function get AkwName():String {
        return this.akwName;
    }

    // Konstruktoren
    public function AkwRep(id:Number, x:Number, y:Number, alter:Number, amNetz:Number, offOhneVerl:Number, offMitVerl:Number, leistung:Number, typ:String, standort:String, akwName:String, wikiurl:String, owner:String, moratorium:Boolean) [...]

1 Ответ

0 голосов
/ 18 июня 2011
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark"
               creationComplete="init()" xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            [Bindable]
            public var akwList:ArrayCollection = new ArrayCollection();
            public var test1:AkwRep = new AkwRep(1,"Testname");

            public function addAkw():void {
                akwList.addItem(test1);
            }

        ]]>
    </fx:Script>

    <mx:VBox>
        <s:Label text="{AkwRep(akwList.getItemAt(0)).akwName}" />
        <s:Button click="addAkw();" label="Add" />
    </mx:VBox>
</s:Application>

В MXML

package {

    [Bindable]
    public class AkwRep {

        private var _akwName:String;

        public function get akwName():String {
            return "Name: " + _akwName;
        }

        public function AkwRep(id:Number, akwName:String) {
            _akwName = akwName;
        }
    }
}

В AkwRep.as

...