flex中的动态实现remoteobject

在flex中,一般直接在设计时写remoteobject的话,这个是比较普遍了,但有的时候,需要在AS代码中动态设置

remoteobject,这个比较少见,所以小结学习之:

   情景是,当页面加载时,代码新建立一个remoteobject,然后设置其方法和调用参数,最后把调用返回的结果(是JAVA中的一个LIST),绑定到

一个repeater控件中去,下面来看代码:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="firstload()" width="706" height="417">

 

  [Bindable]   
            private var posArray:ArrayCollection = new ArrayCollection();    
   
   private function firstload():void
   {
    var categoryremote:RemoteObject=new RemoteObject();   
     categoryremote.destination="categoryservice";
   var o:AbstractOperation = categoryremote.getOperation("getCategoriesByPidflex");   
     o.send(144);   
  o.addEventListener(ResultEvent.RESULT, resultEvent);   
   }

//remoteobject返回的list
   private function resultEvent(event:ResultEvent):void{ 
    
     posArray = event.result as ArrayCollection;
    r.dataProvider=posArray;
    
   }
   private function findAllFaultHandler(event:FaultEvent):void
   {
    Alert.show(event.fault.faultString, "Error");
   }

  注意用o.send中,包含了要发送的参数,  o.addEventListener(ResultEvent.RESULT, resultEvent)中,处理返回的结果事件。

 <mx:Repeater id="r">
      
                   <mx:Button id="repbutton" label="{Category(r.currentItem).name}" click="var btn:Button = Button(event.currentTarget);Alert.show(Category(btn.getRepeaterItem()).id); " width="555" height="83" textAlign="center" fontSize="27"/>
</mx:Repeater>

这里注意repeater R的dataprovider是动态设置的,在代码中,并且当点repeater中的每个按钮时,取得了所点选的button的id编号(注意这里因为列出的是一个个

category类,所以要先转型为Category,然后再获得其id

你可能感兴趣的:(flex中的动态实现remoteobject)