-1

我正在尝试开发一个基于移动的 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] 在意见:: 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() 在 flash.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:


是什么导致了这个错误?需要做什么 ?

我在这里缺少什么吗?

谢谢

4

2 回答 2

0

距离不是ArrayCollection上的记录属性,这就是它引发错误的原因。

data 属性通常是一个通用对象;并且 Flex 编译器在直接访问属性时通常不会引发编译错误。

您可能想要访问 ArrayCollection 中的项目;像这样的东西:

((data as ArrayCollection).getItemAt(0) as MyObjectType).distance
于 2012-03-11T04:30:45.783 回答
0

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);

    }

}
于 2012-03-11T04:38:45.723 回答