封装观察者模式$on(),$emit(),$off()。
let eventList = {}; const $on=(eventName,cb)=>{ if(!eventList[eventName]){ eventList[eventName] = []; } eventList[eventName].push(cb) } const $emit = (eventName,params)=>{ if(eventList[eventName]){ let arr = eventList[eventName]; arr.map((cb)=>{ cb(params) }) } } const $off = (eventName,cb)=>{ if(eventList[eventName]){ if(cb){ let index = eventList[eventName].indexOf(cb); eventList[eventName].splice(index,1); }else{ eventList[eventName].length = 0; } } }
使用的时候把需要的部分导出即可。可以用于vue中的非父子组件之间的传值。