Flex - Mate框架 - 调度事件

use*_*510 2 apache-flex mate

我最近改为Mate作为flex的框架.但是我遇到了一些问题.我想知道如何从通过methodInvoker标记生成的类中调度事件.

<resultHandlers>
        <MethodInvoker generator="{LoginSuccess}" method="setCurrentUser" arguments="{[resultObject]}"/>
Run Code Online (Sandbox Code Playgroud)

然后在课堂上我想发一个活动.

public function setCurrentUser(calUser:Object):void{
        if(calUser != null){
            Model.instance.currentUser = calUser as CalUser;
            loadOnlineCalendars(Model.instance.currentUser);
        }
    }

    public function loadOnlineCalendars(calUser:CalUser):void{
        for(var i:int = 0 ; i<calUser.calConnectors.length; i++){//logic here
            dispatchEvent(new CalConnectorEvent(calUser.calConnectors as CalConnector,CalConnectorEvent.LOAD_ONLINE_CALENDAR_EVENT,true));
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是我似乎无法在eventMap中甚至在应用程序根目录中捕获事件.

如果有人对Mate有任何经验,我会感激一些指点.也许我这样做是错的.我只想从服务器获得结果 - 查看结果并根据结果再次联系服务器.应该很简单.

活动地图:

            <resultHandlers>
            <MethodInvoker generator="{LoginSuccess}" method="setCurrentUser" arguments="{[resultObject]}"/>
            <ServiceResponseAnnouncer type="result"/>

            </resultHandlers>
            <faultHandlers>
            <ServiceResponseAnnouncer type="fault"/>

            </faultHandlers>
    </RemoteObjectInvoker>
Run Code Online (Sandbox Code Playgroud)

The*_*heo 7

通常采用的方法是将事件映射的调度程序注入对象:

<MethodInvoker generator="{MyClass}" method="someMethod" arguments="{[a, b]}">
  <Properties dispatcher="{scope.dispatcher}"/>
</MethodInvoker>
Run Code Online (Sandbox Code Playgroud)

内部Properties标记设置由正在创建的对象MethodInvoker的属性,并且保证在调用方法之前设置属性.

该类显然需要有一个名为dispatcher(或任何你喜欢的名称)的公共属性才能使其工作.在事件映射调用中调度要侦听的事件dispatcher.dispatchEvent(...).

如果由the创建的对象MethodInvoker将被多次使用,如果它是一个管理器,比如说,常见的习惯用法是使用ObjectBuilder一个事件处理程序块来创建它,该块由FlexEvent.INITIALIZE以下内容触发:

<EventHandlers type="{FlexEvent.INITIALIZE}">
  <ObjectBuilder generator="{MyClass}" constructorArguments="{scope.dispatcher}"/>
</EventHandlers>
Run Code Online (Sandbox Code Playgroud)

在此示例中,事件调度程序作为构造函数参数注入,但您可以像使用内部Properties标记一样使用MethodInvoker.