2011-10-21 16 views
0

Flex - アプリケーションに問題があります。下のコードサンプルでわかるように、いくつかのパネルをvgroupに追加しようとしています。パネルは私のMYSQL dbからタイトルを取得しています。私の問題は、callresponderの非同期呼び出しを待つことができないため、パネルがいっぱいにならないということです。 DBからのデータをどのように待つことができますか?コールレスポンダーの非同期呼び出し

ボタンを使って新しいパネルを作成しようとすると、機能します。ボタンを押すと、1つのパネルが正しいタイトルで表示されます。

<?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); 
} 

ですか?

関連する問題