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