0

ボタンをクリックしてコンポーネントを再初期化したい.次のコードを使用していますが、何も起こっていないようです.

protected function createItem(event:MouseEvent):void
{
    this.currentState="Viewer";
    this.initialize();
}

なんで?

4

2 に答える 2

1

はい、Flex コンポーネントのライフサイクルについて言及しています。Flex がコンポーネントを作成するための 4 つのステップがあることは知っていますが、Flex にそれらのステップを再度実行させる方法はありますか?

実際には、Flex コンポーネントのライフサイクルには 4 つよりもはるかに多くのステップがあります。詳細については、こちらこちらを参照してください。

つまり、Flex コンポーネントのライフサイクルの一部として実行されるメソッドが 4 つあります。これらは、createChildren()、commitProperties()、updateDisplayList()、および measure() です。MX アーキテクチャには、layoutChrome() メソッドもありますが、一般的には使用されていません。

Flex 4 Spark アーキテクチャでは。他にも多くのフック (partAdded()、partRemoved()) がありますが、それらはすべて MX アーキテクチャから拡張されています。

無効化メソッドを使用することでメリットが得られる場合があります。

  • 次のレンダリング イベント中に commitProperties() を強制的に再実行するために、コンポーネントで invalidateProperties() を実行します。
  • コンポーネントで invalidateDisplayList() を実行して、次のレンダリング イベント中に updateDisplayList() メソッドを強制的に再実行します。
  • コンポーネントで invalidateSize() を実行して、次のレンダリング イベント中に measure() メソッドを強制的に再実行します。
  • Flex 4 の Spark コンポーネントで、invalidateSkinState() を実行して、次のレンダリング イベント中に getCurrentSkinState() メソッドを強制的に再実行します。

    また、Spark コンテナーの場合は removeChild() --removeElement() を使用し、Spark コンテナーの場合は addChild()--addElement を使用してステージからコンポーネントを削除することもできます。それは本質的に、コンポーネントにそのプロセスを再起動させることになります。

    コンポーネントの新しいインスタンスを作成し、古いインスタンスを削除することもできます。

于 2012-10-19T13:47:10.790 に答える
0

私は自分の問題を解決しました。私の方法のためにここに投稿したほうがいいかもしれません。

サービスを呼び出すために2行を追加し、それをCompenentが使用している変数に配置するだけで、すべてが正常に機能します。

    protected function createItem(event:MouseEvent):void
    {
        this.currentState="Viewer";
        this.initialize();

countResult.token = productdetailService.count();
countResult2.token = getNewProductIDService.count();

    }
于 2012-10-20T06:41:43.803 に答える