0

Flex アプリケーションで View/Model/View-Model または Presentation Model パターンを使用する方向に移行しようとしています。これは、物事を行うための「正しい」方法のように感じられるからです。ただし、Flex データバインディングで何かがどのように機能するかについて質問があります。

バインドProject可能な名前フィールドを含むモデル クラスがあるとします。プロジェクトに関する情報を表示するレポートを作成したいと考えています。レポートのタイトルは、[プロジェクト名]の概要とします。レポートの裏付けとなる View-Model クラスを作成したいと考えています。このSummaryViewModelクラスにはtitle、レポートのタイトルを提供するフィールドがあります。

私のレポート mxml では、タイトル ラベルを にバインドしsummaryModel.titleますtitleが、何らかの形でバインドする必要があるprojectModel.nameため、プログラムの別の部分で名前が変更された場合、レポート タイトルも更新されます。

Flex でこの「2 レベル」のデータ バインディングを実現する正しい方法は何ですか? 私は物事を別の方法で行うべきですか?

4

2 に答える 2

1

次のようなモデルがあるとします。

[Bindable]
public class Project {
    public var name:String;
}

そして、プレゼンテーション モデルがあります。

[Bindable]
public class SummaryPresentationModel
{
    private var projectModel:Project = new Project();

    public var title:String;
}

コンストラクターで、モデルのセッターをタイトルを設定する関数にデータ バインドできます。

    public function SummaryPresentationModel() {
        BindingUtils.bindSetter(modelNameChanged, projectModel, "name");
    }

そして、次の値を設定しますtitle

    private function modelNameChanged(newValue:String):void {
        title = "[" + projectModel.name + "] Summary";
    }

その後、自由に にバインドでき、変更summaryPM.title時にすべてが UI にチェーンされprojectModel.nameます。

より複雑にして「ゲッター」関数を使用することもできますがtitle(私がここにいるように設定するのではなく)、変更通知を伝達する必要があります。私はそれほど難しくはありませんが、この方法は従うのが少し簡単だと思います.

お役に立てれば!

于 2011-07-16T22:26:21.937 に答える
0

他のバインディングと同じように、両方が更新されます(タイトルとサマリーモデルの両方を配置する場所です)。

値を定義する方法を投稿すると、構文をサポートできますが、これは難しいバインド操作ではありません。物事がやや複雑になるのは、双方向のバインディングです。

于 2011-07-16T06:39:13.887 に答える