我有一个父组件,比如P,它有函数,比如Pfunc,我还有两个子组件,比如C1和C2,以及它们各自函数,比如C1func和C2func。如何从任何组件调用任何函数?
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,那你就有点不走运了。同一层次的两个组件之间不应该有直接的交互。最好的方法是调度一个事件;在父组件中侦听它,并使父组件向下回调到备用组件。
1条答案
按热度按时间vjrehmav1#
如何从任何组件调用任何函数?
从封装的Angular 来看:
你永远不能调用任何组件中的任何函数。要向上通信到父组件,你应该使用事件调度。要向下通信;你应该调用一个函数或者设置一个属性。2你永远不应该横向交流。
如果你想让P执行PFunc,那么就执行它:
如果你想让P执行C1 Func,并且C1 Func是公共的,那么你可以在P内部做如下的事情:
如果你想让P执行C2Func,并且C2Func是公共的,那么你可以在P内部做如下的事情:
如果您希望C1或C2调用PFunc,则应调度如下事件:
在P中,应该有一个事件侦听器,概念上如下所示:
如果你想让C1调用C2Func或者让C2调用C1 Func,那你就有点不走运了。同一层次的两个组件之间不应该有直接的交互。最好的方法是调度一个事件;在父组件中侦听它,并使父组件向下回调到备用组件。