1 .https://juejin.im/post/5c77982ce51d45457d19797e#heading-4
2 .就是把很多组件都可能用到的<script>部分都分离到一个单独的js文件,使用的时候直接引入即可
3 .
注意事项
1 .虽然混入里面的methods和组件里面的methods走的是优先使用组件的事件,但是还是保证不一样吧,这样其实就想用哪个就用哪个,不必要非走潜规则,现在发现一些问题
Emitter.js
function broadcast(componentName,eventName,params){
this.$children.forEach((child=>{
const name=child.$options.name;
if(name==componentName){
child.$emit.apply(child,[eventName].concat(params));
}else{
broadcast.apply(child,[componentName,eventName].concat([params]));
}
}))
}
export default{
methods:{
dispatch(componentName,eventName,params){
let parent=this.$parent||this.$root
let name=parent.$options.name;
// 获取父组件的名字
while(parent &&(!name||name!=componentName)){
parent=parent.$parent;
if(parent){
name=parent.$options.name
}
}
if(parent){
parent.$emit.apply(parent,[eventName].concat(params))
}
},
broadcast(componentName,eventName,params){
this.broadcast.call(this,componentName,eventName,params)
}
}
}