Гибкая мобильная ArrayCollection Ошибка - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь разработать мобильное Flex-приложение.

В моем приложении у меня есть два представления.

Я пытаюсь передать ArrayCollection как данные из одного представления в другое.но при попытке получить доступ к ArrayCollection во втором представлении я получаю сообщение об ошибке ..

Вот код из firstView.mxml :

dirSteps - это массив массивов, который я пытаюсь передать следующему представлению ...

for (var r:Number = 0 ; r < directions.numRoutes; r++ ) {
                    var route:Route = directions.getRoute(r);

                    if (r >= 0 || r < (numRoutes - 1)) {
                        var midMarker:Marker = new Marker(route.endLatLng);
                        map.addOverlay(midMarker);
                    }
                    var numSteps:uint = route.numSteps;
                    for (var s:Number = 0 ; s < numSteps ; s++ ) {
                        var step:Step = route.getStep(s);
                        dirSteps.addItem({Step: (s+1), Description: step.descriptionHtml, Distance: step.distanceHtml, LatLng: step.latLng});
                    }
                }
                dirSteps.refresh(); 
 } 


 ..... some more code ...
 navigator.pushView(DetailDirection,dirSteps); 

Код из DetailDirection.mxml :

[Bindable]
private var directionList:ArrayCollection;

private function init():void {
    directionList = new ArrayCollection(ArrayUtil.toArray(data));

    // here, data should be my arraycollection, but throws above error on 
    // trying to access property (i.e Step, Distance etc .. ) of ArrayCollection ...
    trace(data.Distance);
}

Ошибка: неизвестное свойство: «Расстояние».в mx.collections :: ListCollectionView / http://www.adobe.com/2006/actionscript/flash/proxy::getProperty()[E:\dev\4.y\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:870] в представлениях :: DetailDirection / init () [C: \ Documents and Settings \ ARSENAL \ Adobe Flash Builder 4.6 \ CityExplorer_v2.0 \ src \ views \ DetailDirection.mxml: 21] вviews :: DetailDirection / ___ DetailDirection_View1_creationComplete () [C: \ Documents and Settings \ ARSENAL \ Adobe Flash Builder 4.6 \ CityExplorer_v2.0 \ src \ views \ DetailDirection.mxml: 6] в flash.events::EventDispatcher/dispatchEventFunction ().events :: EventDispatcher / dispatchEvent () в mx.core :: UIComponent / dispatchEvent () [E: \ dev \ 4.y \ frameworks \ projects \ framework \ src \ mx \ core \ UIComponent.as: 13152] в mx.core :: UIComponent / set initialized () [E: \ dev \ 4.y \ frameworks \ projects \ framework \ src \ mx \ core \ UIComponent.as: 1818] в mx.managers :: LayoutManager / doPhasedInstantiation () [E: \ dev \ 4.y \ frameworks \ projects \ framework \ src \ mx \ Manager \ LayoutManager.as: 842] в mx.managers :: LayoutManager / doPhasedInstantiationCallback () [E: \ dev \ 4.y \ frameworks \проекты \ framework \ src \ mx \ manager \ LayoutManager.as: 1180]


Что вызывает эту ошибку?Что нужно сделать?

Что-то, чего мне здесь не хватает?

Спасибо

Ответы [ 2 ]

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

здесь data - коллекция ArrayCollection. Таким образом, вы не можете получить прямой доступ к data.Distance

data[index] даст вам объект, поэтому data[index].Distance

например:

var data:ArrayCollection = new ArrayCollection();

data.addItem({name:"jack", distance:300});
data.addItem({name:"jill", distance:400});

trace(data[1].distance);  // prints 400

В вашем случае используйте цикл

private function init():void {

    for(var i:int = 0; i < data.length; i++){

        var item:Object = data[i];
        trace(item.Distance);

    }

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

Расстояние не является документированным свойством для ArrayCollection , поэтому выдает ошибку.

свойство данных обычно является универсальным объектом; и компилятор Flex обычно не генерирует ошибки компиляции при обращении к свойствам непосредственно к нему.

Возможно, вы хотите получить доступ к элементу в коллекции ArrayCollection; как то так:

((data as ArrayCollection).getItemAt(0) as MyObjectType).distance
...