親コンポーネント、たとえばPがあり、これには関数、たとえばPfuncがあります。また、C1とC2などの2つの子コンポーネントと、C1funcとC2funcなどのそれぞれの関数があります。
任意のコンポーネントから任意の関数を呼び出す方法は?
親コンポーネント、たとえばPがあり、これには関数、たとえばPfuncがあります。また、C1とC2などの2つの子コンポーネントと、C1funcとC2funcなどのそれぞれの関数があります。
任意のコンポーネントから任意の関数を呼び出す方法は?
任意のコンポーネントから任意の関数を呼び出す方法は?
カプセル化の観点から:
どのコンポーネントでも関数を呼び出せないようにする必要があります。親コンポーネントと「通信」するには、イベントディスパッチを使用する必要があります。コミュニケーションをとる。関数を呼び出すか、プロパティを設定する必要があります。横向きにコミュニケーションをとらないでください。
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つのコンポーネントは、互いに直接相互作用してはなりません。そのための最良の方法は、イベントをディスパッチすることです。親でそれをリッスンし、親に代替コンポーネントへのコールバックを依頼します。