2011-06-18 157 views
1

也许我没有得到一个ArrayCollection的实际意义,但首先一些代码Flex 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); 

(AKW意味着Atomkraftwerk - >核电厂;))

所以我用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) [...] 

回答

0
<?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

+0

首先的tahnk你:)我的整个AkwRep.as是绑定的。是否有“_”的理由? – ABLX

+0

“_”通常用于使用get/set函数的变量。这只是一个标准。如果你看看Adobe发布的flex sdk库。几乎每个班级都会看到它的出现;) –

+1

您的akwList声明上方有[Bindable]标签吗? –