Robotlegs:私は2つのビューと調停者があり、1つのことを持っています。どうすれば乾かすことができますか?
質問
メディエーターを使用してデータを取得するリストを表示する2つのビューがあります。しかし、私は何らかの形でそれを乾燥させたいので、同じことのために自分自身を2回繰り返す必要はありません。どうすればいいのですか?
edit1(code):
[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つのビューメディエーターを持っています。それらを乾燥させる方法は?
私が持っているソリューション:イベントを聞いているメディエーターを備えたドロップダウンリストを含む小さなビューを作成します。大きなコンポーネントでは、彼らはこの小さなコンポーネントのビューで信号を聞いています。これ以上何もない。とてもいいようですが、私はそれほど素晴らしいとは思いません
解決
それで、あなたが繰り返さないようにしたいビューとメディエーターの両方に機能がありますか?
別のオブジェクトに再利用するコードを配置し、複数のビューとメディエーターからその方法を呼び出すことができます。または、祖先のクラスに入れて、あなたの見解と調停者の両方にそれらの各クラスを拡張することもできます。
ベストプラクティスは、後者ではなく前者を行うことです。
所属していません StackOverflow