2011-10-21 175 views
0

我的Flex-应用程序出现问题。正如你可以在下面的代码示例中看到的,我尝试将一些面板添加到vgroup。面板从我的MYSQL分贝获得他们的标题。我的问题是,我不能等待callresponder的异步调用,所以面板不会被填充。我如何等待来自数据库的数据?呼叫应答器的异步呼叫

如果我尝试使用按钮构建一个新的面板,它可以工作。当我按下按钮时,一个面板显示正确的标题。

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       minWidth="955" minHeight="600" 
       xmlns:produktservice="services.produktservice.*" 
       xmlns:valueObjects="valueObjects.*"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.containers.Panel; 
      import mx.controls.Alert; 
      import mx.rpc.events.ResultEvent; 

      private var zaehler:int = 0; 

      private function getProduktByID(i:int):void 
      { 
       getProduktByIDResult.token = produktService.getProduktByID(i); 
      } 

      private function init():void 
      { 
       for(var i:int=0; i<10; i++) 
       { 
        getProduktByID(818+i); 
       } 
      } 

      protected function getProduktByIDResult_resultHandler(event:ResultEvent):void 
      { 
       var dynamicPanel:Panel; 
       dynamicPanel = new Panel(); 
       dynamicPanel.id="dynamicPanel"+zaehler; 
       dynamicPanel.width=400; 
       dynamicPanel.height=200; 
       dynamicPanel.title=getProduktByIDResult.lastResult.titel; 

       vPanelGroup.addElement(dynamicPanel); 
      } 


      protected function button1_clickHandler(event:MouseEvent):void 
      { 
       getProduktByID(818+zaehler); 
       zaehler++; 
      } 

     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <produktservice:ProduktService id="produktService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/> 
     <s:CallResponder id="getProduktByIDResult" result="getProduktByIDResult_resultHandler(event)"/> 
     <valueObjects:Produkt id="produkt"/> 
     <!-- Platzieren Sie nichtvisuelle Elemente (z. B. Dienste, Wertobjekte) hier --> 
    </fx:Declarations> 
    <s:VGroup id="vPanelGroup" gap="10" creationComplete="init()"> 
    </s:VGroup> 
    <s:Button x="726" y="270" label="Button" click="button1_clickHandler(event)"/> 
</s:Application> 
+0

由于ProduktService不是标准的Flex类;很难说出你如何创建和发送你的服务或处理结果。也许你应该分享那堂课。 – JeffryHouser

回答

0

是否

protected function getProduktByIDResult_resultHandler(event:ResultEvent):void 
{ 
    var dynamicPanel:Panel; 
    dynamicPanel = new Panel(); 
    dynamicPanel.id="dynamicPanel"+zaehler; 
    dynamicPanel.width=400; 
    dynamicPanel.height=200; 
    dynamicPanel.title=event.result.titel; 
    vPanelGroup.addElement(dynamicPanel); 
}