$dispatch 只会通知自己的父亲,父亲的父亲,父亲的父亲
eventBus 所有的父组件和子组件
main.js 全局注册
// 向上通知 Vue.prototype.$dispatch = function (eventName,value) { let parent = this.$parent while(parent) { parent.$emit(eventName,value) parent = parent.$parent } }
// 向下传递 Vue.prototype.$broadcast = function (eventName,value) { // 获取当前组件下的所有的孩子 const broadCast = (children) => { children.forEach(child => { child.$emit(eventName,value) if (child.$children) { broadCast(child.$children) } }); } broadCast(this.$children) }
$attrs表示的是属性的集合
v-bind="$attrs" 传递传过来的所有的值给下一个组件
$listeners表示的是方法的集合
v-on="$listeners" 传递传过来的所有的方法给下一个组件
eventBus 定义到全局上
Vue.prototype.$bus = new Vue() this.$bus.$on('绑定的事件', function () { }) this.$bus.$emit('触发绑定的事件',XXX)
标签:vue,parent,eventName,Vue,child,组件,children,传值 From: https://www.cnblogs.com/loveMis/p/16994329.html