0

viewStack/NavigatorContent で tabBar を使用している 4 つのビューを持つプロジェクトがあります。XML を収集して Bindable ArrayCollections に変換する HTTPServices をいくつかセットアップしました。ユーザーがタブをクリックするまで表示されないチャート、dataGrid などに、そのデータをいつ、どのように渡すのが最善の方法でしょうか? 今、私は各項目を作成完了関数で設定しています。うまくいっているように見えますが、これが最善の方法ですか、それとももっと良い方法でもっと速い方法がありますか?

ありがとう、マーク

4

2 に答える 2

1

最良の方法は、データバインディングを使用することです。ViewStackタブのコンテンツを表す魔女のコンポーネントを含むメインコンテナがあるとします。[Bindable]したがって、次のようなメインコンテナ内のデータのプロパティが必要です。

[Bindable]
private var chartData:ArrayCollection;

[Bindable]
private var dataGridData:ArrayCollection;

したがって、グラフを含むコンポーネントの場合、グラフデータにデータバインディングを入力する必要があります。

<ViewStack>
    …
    <MyChartsTab chartData="{chartData}" />
    …
</ViewStack>

そしてもちろん、コンポーネントに同じchartDataフィールドを導入する必要があります(必ずそうする必要がありpublicます)MyChartsTab。そこにあるチャートには、データバインディングを入力することもできます。

したがって、データを取得した後、メインコンポーネントのフィールドに入力するだけで、データバインディングは、ユーザー側からの初期化を気にせずに残りのジョブを実行します。

于 2011-04-18T17:40:14.843 に答える
0

ビューを作成するときは、必要なデータをバインドできるパブリック変数 (「dataProvider」など) を許可してください。このような:

<mx:ViewStack>
        <s:NavigatorContent>
            <SomeComponent dataProvider="{someData}" />
        </s:NavigatorContent>
        <s:NavigatorContent>
            <SomeComponent2 dataProvider="{someData}" />
        </s:NavigatorContent>
    </mx:ViewStack>

そして、カスタム コンポーネント内には次のものがあります。

private var _data:Object; // use strong typing if possible

public function set dataProvider(value:Object):void // use strong typing if possible
{
    this._data = value;
}

public function get dataProvider():Object
{
   return this._data;
}
于 2011-04-18T17:37:26.713 に答える