/*
事件存放的仓库
多个事件
每个事件会对应多个事件函数
aaa:[]
haha:[]
eventList:{
key:[]
}
$on 事件绑定 eventName callback
一个事件对应多个事件函数
1、分析绑定的这个事件名称在事件仓库中是否存在 如果存在则直接将事件函数添加到数组中去
2、如果不存在则创建一个数组然后将事件函数添加到数组中去
$emit 事件的触发 eventName params
1、分析当前事件名称是否存在,如果存在则遍历数组中所有的事件进行触发 将参数传递到数组中去
$off 事件解绑 eventName callback
1.分析当前事件名称是否存在 如果存在则 判断第二个参数是否存在 如果存在则 解绑对应的函数
如果不存在则解绑全部
*/
let eventList = {
}
const $on = (eventName,callback)=>{
if(!eventList[eventName]){
eventList[eventName] = [];
}
eventList[eventName].push(callback);
}
const $emit = (eventName,params)=>{
if(eventList[eventName]){
eventList[eventName].forEach((cb)=>{
cb(params);
})
}
}
const $off = (eventName,callback)=>{
if(eventList[eventName]){
if(callback){
let index = eventList[eventName].indexOf(callback);
eventList[eventName].splice(index,1);
}else{
eventList[eventName].length = 0;
}
}
}
export default {
$on,
$emit,
$off
}