0

こんにちは私たちはUI側のプロジェクトでFlex4を使用しています。アプリケーションダッシュボードをロードすると、ポッドのセットが表示されます。ポッドをクリックすると、ポッドビューが開きます。このポッドビューには、最初の列がハイパーリンクであるデータグリッドが含まれています。ハイパーリンクをクリックすると、モジュール画面である別の画面が開きます。

このモジュール画面には、上部に[送信]ボタンといくつかのデータグリッドがあります。次に、RemoteObjectを使用してグリッドにデータをロードします。各グリッドの親コンテナはWindowShadeコンポーネントです。

ここでの要件は、ユーザーが一方または両方のグリッドに変更を加えて、[送信]をクリックできることです。ユーザーが変更したグリッドに応じて、対応するウィンドウシェードを読み取り専用にします。ユーザーが両方のグリッドを変更した場合は、両方のウィンドウシェードコンポーネントを読み取り専用にして、[送信]ボタンを無効にする必要があります。ユーザーは、[送信]をクリックすると、画面を閉じたり画面から移動したりすることなく、この変更をすぐに確認できるはずです。

ユーザーが初めて画面を開いたときに、バックエンドからいくつかのステータスを取得します。これらのステータスに応じて、ウィンドウシェードを読み取り専用にし、ボタンを有効/無効にします。[送信]をクリックしても、バックエンドを押してステータスを取得しますが、ボタンの有効化/無効化やウィンドウシェードは発生しません。

swfが作成されたmxmlファイルのupdateCompleteメソッドで有効化/無効化のロジックを記述しました。

updateCompleteは、ユーザーが初めて画面を開いたときに呼び出されます。ユーザーが[送信]をクリックしても呼び出されません。なんでそうなの?

ローダーとSWFLoaderを使用して以下のようにSWFファイルをロードしようとしましたが、どちらも機能しません。var request:URLRequest = new URLRequest( "com/citi/risk/credit/maintenance/view/widgets/CRCMaintenanceModule.swf"); var loader:Loader = new Loader(); loader.load(request);

ヘルプやポインタをいただければ幸いです。

4

1 に答える 1

0

次の 2 つの点を考慮してください。

1) 要するに、FlexEvent.UPDATE_COMPLETEディスパッチされるイベントはレンダリング自体を完了した (Flex コンポーネントのライフサイクルを通過した) ことです。これは、コンポーネントが変更され、その状態を再レンダリングする必要がある頻度に応じて、1 回または複数回発生する可能性があります。

このイベントの頻度/タイミングは、ディスパッチしているオブジェクトによって異なります。たとえば、サイズ変更中のコンテナは、この回数ディスパッチされます。決して変更されないラベルは、一度しか変更しない場合があります。

代わりに、"creationComplete" ( FlexEvent.CREATION_COMPLETE) イベント リスナーを追加することを検討してください。「creationComplete」は 1 回しか発生しないため、送信ボタンを含む任意のオブジェクトにリスナーを追加できます。

2) [送信] をクリックすると、「updateComplete」リスナーを追加したオブジェクトは、Flex のコンポーネントのライフサイクルを通過するのに十分なほど変更されていない可能性があります。したがって、イベントはディスパッチされません。

これが実際に発生しない理由に対する答えは、イベント リスナーを追加したオブジェクトによって異なります。

ボタンがクリックされたときに適切な要素を無効にできるように、送信ボタンで「クリック」ハンドラーを使用してみましたか? ここでも、「updateComplete」とは異なり、「クリック」イベントは 1 回だけ発生します ;)

于 2012-05-17T10:19:29.137 に答える