0

ボタンから開くポップアップ ウィンドウ (selectReasonCode) があります。ボタンには次のコードがあります

var selectReasonCode:SelectReasonCode = new SelectReasonCode();         
selectReasonCode.title = "Reason Codes";
selectReasonCode.showCloseButton = true;
PopUpManager.addPopUp(selectReasonCode, this, true);
PopUpManager.centerPopUp(selectReasonCode);             
selectReasonCode.updateReasons(reasonTypeId, rasonCds);  //This sets the dataprovider 

理由コードの選択画面には、updateReasons メソッド (上記のメソッドによって呼び出される) で設定された値が取り込まれたデータ グリッドがあります。

問題は、ポップアップ画面が空で開くことです。しかし、デバッグ モードでコードにブレーク ポイントを追加して渡すと、画面にデータが表示されます。データが実際に設定される前に画面が開くと思います。これは本当ですか?もしそうなら、画面が開く前に update Reasons メソッドが最初に実行されるようにするにはどうすればよいですか?

デバッグ モードを除外するには... updateReasons コードの後に​​エラーを発生させる行を追加しました。したがって、最初にエラーが表示され、ユーザーは [OK] をクリックしてからポップアップを開きます。ポップアップにデータが表示されます。

4

1 に答える 1

2

データが実際に設定される前に画面が開くと思います。これは本当ですか?

はい!

もしそうなら、画面が開く前に update Reasons メソッドが最初に実行されるようにするにはどうすればよいですか?

メソッドを実行し、データを取得するまでポップアップを表示しないでください。デバッグ モードで実行すると、リモート サーバーからデータが返されるのを待つ間に必要な一時停止が得られる場合があります。デバッグポイントがどこにあるかによって異なります。

ただし、次のように updateReasons メソッド呼び出しを移動するだけです。

var selectReasonCode:SelectReasonCode = new SelectReasonCode();         
selectReasonCode.title = "Reason Codes";
selectReasonCode.showCloseButton = true;
selectReasonCode.updateReasons(reasonTypeId, rasonCds);  //This sets the dataprovider 
PopUpManager.addPopUp(selectReasonCode, this, true);
PopUpManager.centerPopUp(selectReasonCode);             

ただし、 updateReasons が非同期サービス呼び出しを開始すると仮定すると、ポップアップを表示する前にデータが返されるまで待つ必要があります。概念的には次のようになります。

// first make your pop up component an instance variable instead of a local variable to the method
protected var selectReasonCode:SelectReasonCode;         


// in your method; create the instance like nromal 
selectReasonCode:SelectReasonCode = new SelectReasonCode();
selectReasonCode.title = "Reason Codes";
selectReasonCode.showCloseButton = true;
selectReasonCode.updateReasons(reasonTypeId, rasonCds);  //This sets the dataprovider  
selectReasonCode.addEventListener('someEventThatTellsMeDataIsReturn',onPopUpDataReturn);


// finally in your data is available method, display the pop up using the PopUpManager
protected function onPopUpDataReturn(event:Event):void{
  PopUpManager.addPopUp(selectReasonCode, this, true);
  PopUpManager.centerPopUp(selectReasonCode);             
}
于 2012-06-19T16:41:03.300 に答える