-1

モバイルベースのフレックスアプリケーションを開発しようとしています.

私のアプリケーションでは、2 つのビューがあります。

あるビューから別のビューに ArrayCollection をデータとして渡そうとしていますが、2 番目のビューで ArrayCollection にアクセスしようとすると、エラーが発生します..

firstView.mxmlのコードは次のとおりです。

dirStepsは、次のビューに渡そうとしている arraycollection です ...

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() at flash.events: :EventDispatcher/dispatchEvent() at 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の文書化されたプロパティではないため、エラーがスローされます。

データプロパティは通常、ジェネリックオブジェクトです。また、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 に答える