Mate(二)——常用tag
Event? Handlers???????? 对事件的处理,当事件发出时运行 <EventHandlers type="{QuoteEvent.GET}" debug="true">
<RemoteObjectInvoker destination="ColdFusion" source="stockQuoteExample.QuoteService"
method="getQuote"
arguments="{event.symbol}"
debug="true">
<resultHandlers>
<MethodInvoker generator="{QuoteManager}"
method="storeQuote" arguments="{resultObject}"/>
</resultHandlers>
</RemoteObjectInvoker>
</EventHandlers>
InlineInvoker???????? 调用本地(script block创建)、静态、单例方法 ???????? 调用静态方法 ??????????????? <InlineInvoker method="Math.random" /> ???????? 返回值是 LastReturn ???????? 本地方法 <mx:Script>
private function myMethod():void {
trace('you called me!');
}
]]>
</mx:Script>
<EventHandlers type="myEventType">
<InlineInvoker method="myMethod" />
</EventHandlers>
???????? 单例方法 ????????????? <InlineInvoker method="{MySingleton.getInstance().myMethod}" /> ? MethodInvoker???????? 创建generator指定类的object实例,并调用方法 <MethodInvoker
generator="ClassNameToInstantiate" method="methodToExecute"
arguments="{['argument1','argument2']}"/>
?? myWorker.methodToExecute('argument1','argument2');
Event Anouncer??? 定义事件对象并发出,按事件在文档中定义顺序执行 <EventAnnouncer type="myEventType" generator="MyEventClass">
<Properties myProperty="myValue" myProperty2="other value"/>
</EventAnnouncer>
??? 类似于 var myEvent:MyEventClass = new MyEventClass("myEventType",true);
myEvent.myProperty = "myValue";
myEvent.myProperty2 = "other value";
dispatchEvent(myEvent);
Service Call???????? 使用 HttpServiceInvoker? WebServiceInvoker和RemoteObjectInvoker调用不同的服务。当在EventHandlers中使用这些tags时,当service请求发出后,后续的handler会立刻执行。如果希望后续handler等待service返回值再执行,将这些handlers放在service call的resultHandlers中,如: <RemoteObjectInvoker destination="ColdFusion" source="stockQuoteExample.QuoteService"
method="getQuote"
arguments="{event.symbol}"
debug="true">
<resultHandlers>
<MethodInvoker generator="{QuoteManager}"
method="storeQuote" arguments="{resultObject}"/>
</resultHandlers>
</RemoteObjectInvoker>
<resultHandlers>
<CallBack method="save_result"/>
<EventAnnouncer generator="{ SearchEvent }" type="{ SearchEvent.SEARCH }"></EventAnnouncer>
</resultHandlers>
instance属性:已经创建的remoteObject对象,用于service对象的重用,如: ???? <services:Services id="services"destination="ColdFusion" source="someCFC" /> ?????
Date Copier??? 在 eventHandlers中定义,用处是将数据暂时缓存,为eventhandler后边的标签使用,目标属性可以是event handler lists’s data或者外部变量,如 ???????? <DataCopier destination="data" destinationKey="someProperty" source="result" sourceKey="someProperty" /> Stop Handlers???????? Event handlers中内容会顺序执行,如果想提前停止,可使用这个标签,可根据最后执行的methodInvoker?或者指定判断函数,决定是否停止执行,如 <StopHandlers lastReturnEquals="someValue" /> //最后执行的值是否为someValue
<StopHandlers stopFunction="myStopSequenceFuntion" /> //停止函数
private function myStopFunction(scope:Scope):Boolean {
... here you do some evaluation to determine
whether to stop the execution of the list or not...
return false;
//or return true;
? Call Back ???????? 调用发出Event的对象(如View)中的函数 ??? ObjectBuilder???????? 创建对象为MethodInvoker和PropertyInjector服务,如 <ObjectBuilder generator="ClassNameToInstantiate"
constructorArguments="{['argument1','argument2']}" >
<Properties weightFactor="0.5" flatFee="3" />
</ObjectBuilder>
? 相当于: ??? var myObject:ClassNameToInstantiate = new ClassNameToInstantiate('argument1','argument2'); ??? myObject.flatFee=3; MockRemoteObject用于模拟远程调用,同样的还有MockWebService,如 <MockRemoteObject id="contacts" mockGenerator="{ MockContactService }" delay="3">
<methods>
<MockMethod name="search" dataUrl="assets/xml/contacts.xml"/>
</methods>
</MockRemoteObject>
? 其他tag???????? LocalEventMap 主要用于module,需要传入dispatcher ???????? AsyncMethodInvoker 用于函数的异步调用,类似于RemoteObject监听resultHandler和faultHandler Injectors??????用于business中修改数据后,反应到view中 ????? 当target中的对象创建时就会运行,即the object of that class needs to be created within the display list,or be instantiated by theObjectBuilder orMethodInvoker tags. ??????? 可包含 PropertyInjector和ListenerInjector,以及Message Handler和Event Handler包含的tag ????? 简单实例: <Injectors target="{ ContactList }">
<PropertyInjector targetKey="contacts" source="{ ContactsManager }" sourceKey="contacts"/>
</Injectors>
????????? 包含MethodInvoker和ObjectBuilder <Injectors target="{ ContactForm }">
<MethodInvoker generator="{ ContactsManager }" method="getCurrentContact" />
<ObjectBuilder generator="{ ContactFormresentationModel }" cache="none"
constructorArguments="{ [ scope.dispatcher,lastReturn ] }" />
<PropertyInjector targetKey="model" source="{ lastReturn }"/>
</Injectors>
? PropertyInjector???????? sourceKey只要有get方法即可 ???????? 如果是变量,只要指定source即可 ???????? 可以为target注入多个属性 <Injectors target="{PhotoViewAdapter}">
<PropertyInjector source="{PhotoManager}" .. />
<PropertyInjector source="{UserManager}" ... />
<PropertyInjector source="{AlbumManager}" ... />
</Injectors>
? ListenerInjector???????? 位于Injectors中,监听type指定的事件,并运行 Injectors target代表的类的函数 <Injectors target="{ ContactFormPresentationModel }">
<ListenerInjector eventType="{ ContactEvent.SAVED }" method="contactSaved" />
</Injectors>
? Message Handlers???????? 用于flex中message处理的简化,在多客户端通信的场景上用到,所以可以使用这它们制作出多人交互的应用,如即时聊天,多人对战,实时会议等。 ???????? 有Producer和Consumer,客户端向服务器订阅消息,当服务器消息发生变化后,订阅了该消息的客户端会取得更新数据即时更新 ???????? 当flex messaging service发送消息时执行,可以调用MethodInvoker? EventAnnouncer等。 <MessageHandlers destination="YourGateway">
<MethodInvoker>
<Call back> 等
</MessageHandlers>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |