我最近改为伴侣作为柔性的框架。但是我遇到了一些问题。 我想知道如何调度经由methodInvoker标签生成的类的事件。

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

然后,在I类想分派事件。

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));
        }
    }

问题是我似乎无法能够赶上在eventMap或者甚至在应用程序根该事件。

如果任何人有任何伴侣的经验,我会很感激一些指引。也许,我这样做是完全错误的。 我只是想从服务器获取一个结果 - 看看结果,并根据结果再次接触服务器。应该是相当简单的。

事件映射:  

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

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

            </faultHandlers>
    </RemoteObjectInvoker>

                                                                                                      

有帮助吗?

解决方案

它通常做的方法是将注入事件映射的调度到对象:

<MethodInvoker generator="{MyClass}" method="someMethod" arguments="{[a, b]}">
  <Properties dispatcher="{scope.dispatcher}"/>
</MethodInvoker>

Properties标签设置由MethodInvoker正在创建的对象的属性,以及属性保证调用该方法之前进行设置。

在类显然需要有一个公共的属性称为dispatcher(或任何名称你喜欢)这个工作。调度要监听的事件映射呼叫dispatcher.dispatchEvent(...)事件。

如果由MethodInvoker创建的对象将使用超过一次,如果它是一个经理,说,常见的成语是使用ObjectBuilder是获取由FlexEvent.INITIALIZE触发的事件处理程序块来创建它:

<EventHandlers type="{FlexEvent.INITIALIZE}">
  <ObjectBuilder generator="{MyClass}" constructorArguments="{scope.dispatcher}"/>
</EventHandlers>

在这个例子中,事件调度器被注入作为构造器参数,但可以使用一个内Properties标签就像用MethodInvoker

其他提示

一些周围挖掘后这里,我发现,你可以“T调用从非视图类的事件。该论坛帖子描述了优雅的解决方案,同时还提供了一个快速的解决方法:

Application.application.dispatchEvent(new CalConnectorEvent(calUser.calConnectors as CalConnector,CalConnectorEvent.LOAD_ONLINE_CALENDAR_EVENT,true));

但检查了论坛后置信那里面有很多肉。

在ActionScript中,您可以调度的事件类。对于它必须可以扩展EventDispatcher类或使用一些调度属性和落实IEventInterface。但是,这不是正确的方式,因为该事件不会起泡,起泡,因为是专门针对显示对象的属性。你可以听在目标相类本身的事件。如果你想其他节点收听事件有起泡。因此,作为西奥已经回答了你必须通过队友框架类的调度。现在,您可以从调度类的事件。这可能是从调度的数据类事件的最好办法。欲了解更多信息请参考以下链接 HTTP://www.developria。 COM / 2010/05 /传递的-此事件-pleas.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top