wepy.component基类提供 $broadcast ,$emit ,$invoke 三个方法实现组件之间的交互与通信。如:
this.$emit('some-event',1,2,3,4);
监听组件之间通信与交互事件的事件处理函数必须写在页面或者组件的events对象中,例如:
import wepy from 'wepy'
export default class Com extends 'wepy.component'{
components = {};
data = {};
metheds = {};
events = {
'some-event':(p1,p2,p3,$event) => {
console.log(`${this.$name} receive ${$event.name} from ${$event.source.$name}`);
}
};
}
}
1,$broadcast 是由父组件发起,所有子组件都会收到此广播事件,除非手动取消。事件广播的顺序为广度优先搜索顺序。
2,$emit 正好与$broadcast相反,事件发起组件的所有父组件都会依次收到$emit事件。
3,$invoke 是一个页面或者组件对另一个组件中的方法的直接调用,通过传入组件路径找到相应组件,然后再调用其方法。
比如想在页面中调用组件ComA中的方法,this.$invoke('ComA', 'someMetheds', 'someArgs');
比如想在组件ComA中调用组件ComG中的方法, this.$invoke('../../ComG', 'someMetheds', 'someArgs');