Flex: цикл по массиву массивов - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь создать массив массивов со следующим синтаксисом. Мой вывод определенно не то, что я пытаюсь достичь. Вот мой код:

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, но я не могу понять это. Любые идеи будут очень полезны.

1 Ответ

2 голосов
/ 11 марта 2012

Я собрал это быстрое приложение, чтобы доказать, что ваш код правильно отслеживает folderArray [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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...