0

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

于 2012-06-16T14:06:13.433 回答