手动封装on,emit,off

 

on 绑定

emit 触发

off 解绑


//存放事件
eventList = {
key:val
handle:[]
}

 

1对多
on(eventName,callback);
handle:-------N多个
1、判断事件名称是否存在

2、如果存在的情况下将cb存放在eventName这个数组当中

3、如果不存在创建key值为eventName val值为数组

 

1对多
emit(eventName,params);

当调用emit的时候获取到eventName这的值,对值判断,如果值不存在直接return
如果存在遍历这个值全局进行调用,然后将params传入这些函数

 


off(eventName,[callback])
当调用off的时候获取到eventName这的值,对值判断,如果值不存在直接return
如果存在判断callback是否存在 如果存在删除指定的函数
如果不存在将当前数组清空


*/

const EventList = {

}


const on = function(eventName,callback){
if(!EventList[eventName]){
EventList[eventName] = [];
}

EventList[eventName].push(callback);
}


const emit = function(eventName,params){
if(!EventList[eventName])return;

EventList[eventName].map((cb)=>{
cb(params)
})
}


const off = function(eventName,callback){
if(!EventList[eventName])return;

if(callback){
let index = EventList[eventName].indexOf(callback);
EventList[eventName].splice(index,1);
}else{
EventList[eventName] = [];
}
}

将其暴露出去方便引用

export default {
$on:on,
$emit:emit,
$off:off
}

转载于:https://www.cnblogs.com/aixuexi-504682107/p/10733779.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值