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  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>


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值