2012-03-11 147 views
0

我正在嘗試構建一個數組,將使用以下語法。我的輸出絕對不是我想要實現的。這裏是我的代碼:Flex:通過陣列循環

var labs:ArrayCollection = new ArrayCollection(); 
    var sets:ArrayCollection = new ArrayCollection(); 

    var labsArray:Array = ["ProDPI","WHCC","Tin"]; 
    var setsArray:Array = ["Set1","Set2","Set3"]; 

    var folders:ArrayCollection = new ArrayCollection(); 
    var foldersArray:Array = [labsArray, setsArray]; 

    var objFolderBuild:Object = new Object; 

     for (var i:int = 0; i< foldersArray.length;i++) { 
       for (var j:int = 0; j < foldersArray[i].length; j++) { 
        objFolderBuild.labName = foldersArray[i][j]; 
        folders.addItem(objFolderBuild); 
       } 
     } 
labFolderList.labelField="labName"; 
labFolderList.dataProvider=folders; 
setFolderList.labelField="setName"; 
setFolderList.dataProvider=folders; 

我的輸出是作爲6引用「Set3」出來。我的for循環顯然有些問題,但我無法弄清楚。任何想法都會很有幫助。

+0

我是否錯過了實際在代碼中輸出內容的地方?你指的是什麼輸出? – JeffryHouser 2012-03-11 19:11:02

+0

labFolderList.labelField =「labName」<=用這個來改變labelField來填充組合框 – Bungdaddy 2012-03-11 19:13:07

回答

2

我把這個快速的應用程序放在一起,以證明你的代碼正確地追蹤foldersArray [i] [j]。這是來自您的應用程序的代碼的90%。

但是,我想指出的objFoldersBuild對象只創建一次。因此,每次通過循環執行的操作都是更改現有對象屬性的值,並將其添加到文件夾ArrayCollection中。你有一個ArrayCollection和同一個確切對象的多個副本。答案是每次循環創建一個新對象。

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" preinitialize="windowedapplication1_preinitializeHandler(event)"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 

      protected function windowedapplication1_preinitializeHandler(event:FlexEvent):void 
      { 
       var labs:ArrayCollection = new ArrayCollection(); 
       var sets:ArrayCollection = new ArrayCollection(); 

       var labsArray:Array = ["ProDPI","WHCC","Tin"]; 
       var setsArray:Array = ["Set1","Set2","Set3"]; 

       var folders:ArrayCollection = new ArrayCollection(); 
       var foldersArray:Array = [labsArray, setsArray]; 

       var objFolderBuild:Object = new Object; 

       for (var i:int = 0; i< foldersArray.length;i++) { 
        for (var j:int = 0; j < foldersArray[i].length; j++) { 
         trace(foldersArray[i][j]); 
           objFolderBuild = new Object; 
         objFolderBuild.labName = foldersArray[i][j]; 
         folders.addItem(objFolderBuild); 
        } 
       } 
/*    labFolderList.labelField="labName"; 
       labFolderList.dataProvider=folders; 
       setFolderList.labelField="setName"; 
       setFolderList.dataProvider=folders; */ 
      } 

     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
</s:WindowedApplication> 
+0

對人!非常感謝。 Flex正在踢我的屁股! – Bungdaddy 2012-03-11 19:31:07