2012-03-11 6 views
0

다음 구문으로 배열 배열을 작성하려고합니다. 내 결과물은 내가 성취하려고하는 것이 아니다. 여기 내 코드는 다음과 같습니다.플렉스 : 배열 배열을 통해 반복

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; 

출력이 "Set3"에 대한 6 개의 참조로 나타납니다. for 루프에는 분명히 문제가 있지만 분명히 알 수는 없습니다. 어떤 아이디어라도 큰 도움이 될 것입니다.

+0

코드에서 실제로 출력되는 부분이 누락 되었습니까? 어떤 결과물을 언급하고 있습니까? – JeffryHouser

+0

labFolderList.labelField = "labName"<= ComboBox를 채우도록 labelField를 변경하려면 – Bungdaddy

답변

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

을 사용하십시오! 고마워. 플렉스가 내 엉덩이를 차고 있었어! – Bungdaddy