0

メディエーターを使用してデータを取得するリストを表示する 2 つのビューがあります。しかし、何らかの方法で乾かしたいので、同じことを2回繰り返す必要はありません。どうすればいいのですか?

EDIT1(コード):

[SkinPart(required="false")]
public var WOListsDDL:DropDownList;
    // in partadded
case WOListsDDL:
    // when the selected list is changed in the lists drop down list
    WOListsDDL.addEventListener(IndexChangeEvent.CHANGE, _WOListsDDL_changeHandler);
    WOListsDDL.dataProvider = new ArrayCollection();
    WOListsDDL.labelField = 'title';
break;
    //

    protected function _WOListsDDL_changeHandler(event:*):void{
        _debug('List selection changed handler.');
        _getContentsForList();
    }
    protected function _getContentsForList():void{
        _debug('Getting list items.');
        getItemsSignal.dispatch({key: getSelectedList()._key, itemType: 'item'});
    }
    public var getItemsSignal:GetItemsSignal = new GetItemsSignal();

    override public function mediatorComplete():void{
        getItemsSignal.dispatch({key: tottysAuth.getCurrentUser()._key, itemType: 'list'});
    }

// その後、メディエーターで

    [Inject] public var getItemsSignal:GetItemsSignal;
    override public function onRegister():void{
        // view listeners
        view.getItemsSignal.add(_getItemsSignalHandler);
    }
    protected function _getItemsSignalHandler(input:Object):void{
        getItemsSignal.dispatch(input);
    }

これはすべて 1 つのビュー メディエーター用です。現在、これらのタスクを実行している 2 つのビュー メディエーターがあります。それらを乾燥させる方法は?

私が持っている解決策:イベントをリッスンしているメディエーターを使用して、ドロップダウン リストを含む小さなビューを作成します。大きなコンポーネントでは、この小さなコンポーネントのビューで信号をリッスンしています。これ以上何もない。かなり良さそうですが、それほど素晴らしいとは思いません

4

1 に答える 1

0

ビューとメディエーターの両方に、繰り返したくない機能がありますか?

再利用したいコードを別のオブジェクトに配置し、複数のビューとメディエーターからそのメソッドを呼び出すことができます。または、祖先クラスに配置して、それらの各クラスをビューとメディエーターの両方で拡張することもできます。

ベスト プラクティスは、後者ではなく前者を実行することです。

于 2010-11-22T15:16:51.223 に答える