事件订阅封装

在开发过程中我们会多次运用到派发器进行跨组件触发方法,这里有封装好的 observer.js 供大家使用,有更好的方法欢迎沟通

//数据结构

let eventList = {}

const $on = (eventName,callback)=>{
    if(!eventList[eventName]){
        eventList[eventName] = [];
    }
    eventList[eventName].push(callback);
}

const $emit = (eventName,params)=>{
    if(eventList[eventName]){
        let arr = eventList[eventName];
        arr.forEach(item => {
            item(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
}

 

posted @ 2021-01-11 17:05  小生不才。  阅读(78)  评论(0编辑  收藏  举报