apache-flex 如何在中调用子组件中的函数:a)另一个子组件B)父组件,反之亦然?

vltsax25  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(131)

我有一个父组件,比如P,它有函数,比如Pfunc,我还有两个子组件,比如C1和C2,以及它们各自函数,比如C1func和C2func。
如何从任何组件调用任何函数?

vjrehmav

vjrehmav1#

如何从任何组件调用任何函数?
从封装的Angular 来看:
你永远不能调用任何组件中的任何函数。要向上通信到父组件,你应该使用事件调度。要向下通信;你应该调用一个函数或者设置一个属性。2你永远不应该横向交流。
如果你想让P执行PFunc,那么就执行它:

this.PFunc();

如果你想让P执行C1 Func,并且C1 Func是公共的,那么你可以在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调用C1 Func,那你就有点不走运了。同一层次的两个组件之间不应该有直接的交互。最好的方法是调度一个事件;在父组件中侦听它,并使父组件向下回调到备用组件。

相关问题