Mate(二)——常用tag

来源:互联网 发布:装修淘宝店用什么软件 编辑:程序博客网 时间:2024/05/22 21:16

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  WebServiceInvokerRemoteObjectInvoker调用不同的服务。当在EventHandlers中使用这些tags时,当service请求发出后,后续的handler会立刻执行。如果希望后续handler等待service返回值再执行,将这些handlers放在service callresultHandlers中,如:

<RemoteObjectInvoker destination="ColdFusion" source="stockQuoteExample.QuoteService"                 method="getQuote"                arguments="{event.symbol}"                 debug="true">            <resultHandlers>                <MethodInvoker generator="{QuoteManager}"                     method="storeQuote" arguments="{resultObject}"/>            </resultHandlers>        </RemoteObjectInvoker>


result 事件处理支持 EventAnouncer和CallBack

<resultHandlers><CallBack method="save_result"/><EventAnnouncer generator="{ SearchEvent }"  type="{ SearchEvent.SEARCH }"></EventAnnouncer></resultHandlers>

instance属性:已经创建的remoteObject对象,用于service对象的重用,如:

     <services:Services id="services"destination="ColdFusion" source="someCFC" />
     <RemoteObjectInvoker instance="{services }" ... >

     

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)中的函数

    <CallBack method="methodToCall" arguments="{['argument1', 'argument2']}" />

ObjectBuilder

        创建对象为MethodInvokerPropertyInjector服务,如

<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监听resultHandlerfaultHandler

Injectors

      用于business中修改数据后,反应到view

      当target中的对象创建时就会运行,即the object of that class needs to be created within the display list, or be instantiated by theObjectBuilder orMethodInvoker tags.

       可包含 PropertyInjectorListenerInjector,以及Message HandlerEvent 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

        用于flexmessage处理的简化,在多客户端通信的场景上用到,所以可以使用这它们制作出多人交互的应用,如即时聊天,多人对战,实时会议等。

         有ProducerConsumer,客户端向服务器订阅消息,当服务器消息发生变化后,订阅了该消息的客户端会取得更新数据即时更新

        flex messaging service发送消息时执行,可以调用MethodInvoker  EventAnnouncer等。

<MessageHandlers destination="YourGateway">   <MethodInvoker>   <Call back> 等</MessageHandlers>


 

原创粉丝点击