Flex 3: установка одной коллекции arrayCollection для другой приводит к остановке приложения - PullRequest
0 голосов
/ 22 июля 2011

Я просто продолжу и C / P всю функцию, чтобы убедиться, что вы, ребята, видите, что все происходит:

public function directorsPrepsToShow():void
{
    var tempDPrepsAC:ArrayCollection = new ArrayCollection;
    var dprepSD:Date = new Date;
    var dprepED:Date = new Date;
    var viewSD:Date = rightDate(startViewDate.getMonth(), startViewDate.getDate(), startViewDate.getFullYear());
    var viewED:Date = rightDate(viewSD.getMonth(), viewSD.getDate() + 14, viewSD.getFullYear());
    var newACIDs:String = new String;
    var useACIDs:String = new String;

    for each (var item:Object in dPrepAC)
    {
            dprepSD = textToDate(item[2]);
            dprepED = rightDate(dprepSD.getMonth(), Number(dprepSD.getDate() + (item[3] - 1)), dprepSD.getFullYear());

            if (dateCollider(dprepSD, dprepED, viewSD, viewED))
                    tempDPrepsAC.addItem(item as Array);
    }

    if (tempDPrepsAC.length != usePrepAC.length)
    {
            usePrepAC = new ArrayCollection();
            usePrepAC = tempDPrepsAC;
            Alert.show("HI");
    }
}

Эта функция находится в отдельном файле, который вызывается из основного mxml черезследующее:

<mx:Script source="functions/dprep.as" />

Строка, вызывающая остановку приложения, - "usePrepAC = tempDPrepAC;".usePrepAC объявляется в основном mxml следующим образом:

[Bindable] public var usePrepAC:ArrayCollection = new ArrayCollection;

Может ли кто-нибудь увидеть, почему эта строка вызовет остановку приложения?Если я закомментирую эту строку, приложение загружается нормально (загружает все, кроме информации, которую должен содержать этот AC).Я смотрю на это сейчас около часа, пробуя разные способы получить содержимое tempDPrepsAC в usePrepAC - но ничего не работает.Я попытался погуглить, но ничего не нашел: (

Спасибо, Brds

EDIT

dprep AC объявлен в основном mxml следующим образом:

[Bindable] public var dPrepAC:ArrayCollection = new ArrayCollection;

И функция, которая ее заполняет, выглядит следующим образом:

public function createDirectorsPrepCollection(e:ResultEvent):void
{
    var xmlList:XMLList = XML(e.result).directorsprep;
    var dupString:String = "|";
    var tempArray:Array = new Array;

    for (var i:int = 0; i < xmlList.length(); i++)
    {
        if (dupString.indexOf(String("|" + xmlList[i].name.@id) + "|") == -1)
        {
            tempArray = new Array;
            tempArray[0] = xmlList[i].prepDBID;
            tempArray[1] = xmlList[i].projectDBID;
            tempArray[2] = xmlList[i].startdate;
            tempArray[3] = xmlList[i].numdays;
            tempArray[4] = xmlList[i].positions;

            dPrepAC.addItem(tempArray);

            dupString += "|" + xmlList[i].prepDBID + "|";
        }
    }

    directorsPrepsToShow();
}

Эта функция вызывается так:

<mx:HTTPService id="dprepHttp" url="{dprepXML}" resultFormat="e4x" makeObjectsBindable="true" result="createDirectorsPrepCollection(event)" />

dPrepAC заполняет штраф между прочим ..Я проверяю это в каждом цикле.

1 Ответ

0 голосов
/ 22 июля 2011

Попробуйте использовать следующий код:

usePrepAC.source = tempDPrepsAC.source;
...