2011-10-21 293 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); 
}