2012-03-11 146 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