(13)【ModelLocator】役割と実装例

com.adobe.cairngorm.model.ModelLocator;の説明です。(Cairngorm 2.1)

役割
実行結果を画面にバインドさせる(為のデータを保持する)。


ModelLocatorインターフェイス自体には、特に何も記述されていません。
Singletonで、[Bindable]としてクラスを作成し、このクラスのプロパティを画面にバインディングさせるのが正しい使い方のようです。

実装例

package sample.model{
    import com.adobe.cairngorm.model.ModelLocator;
    import mx.collections.ArrayCollection;
    /**
     * モデルロケータ。画面レスポンス用。(singleton)
     */
    [Bindable]
    public class LoginModelLocator implements ModelLocator{
        private static var loginModelLocator:LoginModelLocator;
        public static function getInstance():LoginModelLocator {
            if( loginModelLocator == null ){
                loginModelLocator = new LoginModelLocator();
            }
            return loginModelLocator;
        }
        /**
         * コンストラクタ。
         */
        public function LoginModelLocator(){
            if(loginModelLocator != null ){
                // todo:
            }
        }
        // メッセージ
        public var message :String;
        // アカウント情報
        public var accountList : ArrayCollection;
    }
}

コマンドクラスで何らかの処理実行結果を元にModelLocatorのプロパティに。

concreteCommandクラス内・・・
private var model : LoginModelLocator = LoginModelLocator.getInstance();
model.message = "ログインしました。";
・・・

画面(mxml)側では、ModelLocatorのプロパティの値が変わったら、画面上の表示も変わるように定義しておく
ここだけアドレスリストでの例です。

<mx:Script>
  <![CDATA[
    import address.model.AddressModelLocator;
    [Bindable]
    public var model : AddressModelLocator = AddressModelLocator.getInstance();
  ]]>
</mx:Script>
<mx:DataGrid ・・・ dataProvider="{model.addressList}"

DataGridの中身をバインディングによって取得しています。

次回は、【CairngormError,CairngormMessageCodes】の役割と実装例です。