ボタンをクリックしてコンポーネントを再初期化したい.次のコードを使用していますが、何も起こっていないようです.
protected function createItem(event:MouseEvent):void
{
this.currentState="Viewer";
this.initialize();
}
なんで?
ボタンをクリックしてコンポーネントを再初期化したい.次のコードを使用していますが、何も起こっていないようです.
protected function createItem(event:MouseEvent):void
{
this.currentState="Viewer";
this.initialize();
}
なんで?
はい、Flex コンポーネントのライフサイクルについて言及しています。Flex がコンポーネントを作成するための 4 つのステップがあることは知っていますが、Flex にそれらのステップを再度実行させる方法はありますか?
実際には、Flex コンポーネントのライフサイクルには 4 つよりもはるかに多くのステップがあります。詳細については、こちらとこちらを参照してください。
つまり、Flex コンポーネントのライフサイクルの一部として実行されるメソッドが 4 つあります。これらは、createChildren()、commitProperties()、updateDisplayList()、および measure() です。MX アーキテクチャには、layoutChrome() メソッドもありますが、一般的には使用されていません。
Flex 4 Spark アーキテクチャでは。他にも多くのフック (partAdded()、partRemoved()) がありますが、それらはすべて MX アーキテクチャから拡張されています。
無効化メソッドを使用することでメリットが得られる場合があります。
Flex 4 の Spark コンポーネントで、invalidateSkinState() を実行して、次のレンダリング イベント中に getCurrentSkinState() メソッドを強制的に再実行します。
また、Spark コンテナーの場合は removeChild() --removeElement() を使用し、Spark コンテナーの場合は addChild()--addElement を使用してステージからコンポーネントを削除することもできます。それは本質的に、コンポーネントにそのプロセスを再起動させることになります。
コンポーネントの新しいインスタンスを作成し、古いインスタンスを削除することもできます。
私は自分の問題を解決しました。私の方法のためにここに投稿したほうがいいかもしれません。
サービスを呼び出すために2行を追加し、それをCompenentが使用している変数に配置するだけで、すべてが正常に機能します。
protected function createItem(event:MouseEvent):void
{
this.currentState="Viewer";
this.initialize();
countResult.token = productdetailService.count();
countResult2.token = getNewProductIDService.count();
}