0

親コンポーネント、たとえばPがあり、これには関数、たとえばPfuncがあります。また、C1とC2などの2つの子コンポーネントと、C1funcとC2funcなどのそれぞれの関数があります。

任意のコンポーネントから任意の関数を呼び出す方法は?

4

1 に答える 1

0

任意のコンポーネントから任意の関数を呼び出す方法は?

カプセル化の観点から:

どのコンポーネントでも関数を呼び出せないようにする必要があります。親コンポーネントと「通信」するには、イベントディスパッチを使用する必要があります。コミュニケーションをとる。関数を呼び出すか、プロパティを設定する必要があります。横向きにコミュニケーションをとらないでください。

PにPFuncを実行させたい場合は、それを実行するだけです。

this.PFunc();

PにC1Funcを実行させ、C1Funcがパブリックである場合、P内で次のようなことを行うことができます。

C1Instance.C1Func()

PにC2Funcを実行させ、C2Funcがパブリックである場合、P内で次のようなことを行うことができます。

C2Instance.C2Func()

C1またはC2でPFuncを呼び出す場合は、次のようなイベントをディスパッチする必要があります。

dispatchEvent(new Event('callPFunc'));

Pの内部には、概念的に次のようなイベントリスナーが必要です。

C1Instance.addEventListener('callPFunc',onCallPFunc);

....
// elsewhere in code

protected function onCallPFunc(event:Event):void{
  PFunc();
}

C1でC2Funcを呼び出したり、C2でC1Funcを呼び出したりする場合は、少し運が悪いです。同じ階層レベルにある2つのコンポーネントは、互いに直接相互作用してはなりません。そのための最良の方法は、イベントをディスパッチすることです。親でそれをリッスンし、親に代替コンポーネントへのコールバックを依頼します。

于 2012-06-16T14:06:13.433 に答える