题
我最近改为伴侣作为柔性的框架。但是我遇到了一些问题。 我想知道如何调度经由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