2009-06-25 5 views
1

私はFlexでさまざまなユーザーロールを使用して多重化アプリケーションを構築しました。メニューバーを使ってビュースタックを使用して、異なるページ間を移動します。メニューによるFlexコンポーネントのライフサイクル - ベストプラクティス

しかし、ページが開くたびに、init()関数でデータベース呼び出しを行い、ユーザーロール設定などを適用する必要があります。このinit関数は、このページの一部のUI要素を参照することがあります。

"creationComplete"イベントでロードしようとしましたが、このスタックは(ビュースタックに表示されたページが再構築されないため)一度だけ起動されます。

私は "show"イベントに入れましたが、これは一貫してトリガされないようです。または、ページが初めて完全に作成される前です。

このケースのベストプラクティスは何ですか? は、* Iは、データを渡す必要があり *コールのinit関数(データベース呼び出し) *操作するコンポーネント

理想的には私が毎回ページがロードされ、すべてのコンポーネントが作成された後のinitを呼び出す方法が必要になります。

あなたの助けのおかげで、 マーティン

答えて

0

ジャストアイデアが、なぜのViewStack変化効果のリモート呼び出しをやろうとしません。あなたのビューは、実装するためのインターフェイスを使用することができます。

+0

はい、私がやりたいことですが、初めてビューにアクセスしなかったときは、ビューの子を参照できません。彼らはまだ存在しません。 TabBarのみが、ITEM.CLICKイベントが発生するとコンテナの子を持つプロパティが初期化されます。 しかし、タブバーでViewstackを使用する場合、このイベントはサポートされていません。 これで、遅延インスタント化を終了し、creationPolicyを "All"に設定し、すべてのビュースタックの呼び出しを変更しました。 –

+0

私はこの種の問題にも問題があることを覚えています。私はもうソースを所有していませんが、私が覚えていることは、creationCompleteとshowエフェクトの両方を使用しました。初めてビューを作成するcreationCompleteハンドラを実行してinit関数を呼び出し、creationDone変数をtrueに設定します。ショーエフェクトハンドラで、creationDoneがtrueであるかどうかをチェックし、そうである場合はinit –

0

try updateCompleteイベント。

(必要に応じて)オブジェクトがcommitProperties()、measure()、およびupdateDisplayList()メソッドを呼び出したときに送出されます。

コンポーネントを表示する前に変更する最後の機会です。すべてのプロパティがコミットされ、コンポーネントが測定され、レイアウトされています。

+0

を呼び出します。このイベントは、ページがロードされる前にさえ頻繁に発生します。 –

0

s:GroupをラッパークラスでラップしてTabNavigatorの中に入れると、同じ種類の問題が発生しました。その結果、showイベントは呼び出されていません。最後に、s:Groupをすべてmx:Canvasに変更し、直接TabNavigatorに入れました(同じことがViewStackにも適用されます)。その後、creationCompleteイベントが1回目以降の呼び出しで呼び出されましたのmx:Canvas

関連する問題