robotlegs:我有2个观点和调解员有共同点1件事我怎么能干它?

时间:2010-11-06 00:43:16

标签: dry robotlegs

我有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 个答案:

答案 0 :(得分:0)

因此,您不希望重复视图和调解器的功能吗?

您可以将要重用的代码放在另一个对象中,并从多个视图和调解器中调用其方法。或者您可以将它放在祖先类中,并在视图和中介中扩展每个类。

最佳做法是做前者而不做后者。