我有一个父组件,比如 P,它有功能,比如 Pfunc。我还有两个子组件,比如 C1 和 C2,以及它们各自的功能,比如 C1func 和 C2func。
如何从任何组件调用任何函数?
我有一个父组件,比如 P,它有功能,比如 Pfunc。我还有两个子组件,比如 C1 和 C2,以及它们各自的功能,比如 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,那么您有点不走运。同一层次结构级别的两个组件不应相互直接交互。最好的方法是发送一个事件;在父级中监听它,并让父级回调到备用组件。