美文网首页
wx 事件车

wx 事件车

作者: 盖伦_2985 | 来源:发表于2019-08-08 09:57 被阅读0次
    let eventMap = {};
    
    
    
    module.exports = {
      // 监听事件
      $on(eventName, callback){
        // 判断eventMap中有没有eventName对应的事件回调列表
        if(!eventMap[eventName]){
          eventMap[eventName] = [];
        }
        // 将回调保存在事件回调的列表中
        eventMap[eventName].push(callback);
    
        console.log(eventMap);
      },
      // 触发事件
      $emit(eventName, params){
        // 判断是否有监听,如没有则返回
        if (!eventMap[eventName]){
          return;
        }
        // 取得事件回调的列表
        let callbackArr = eventMap[eventName];
        // 遍历列表,调用每一个回调函数
        callbackArr.forEach(cb=>{
          cb(params);
        })
      },
      // 移除事件监听
      $off(eventName, callback){
        // 移除所有
        if(!eventName && !callback){
          eventMap = {};
        }
        // 移除一个事件的所有监听
        else if(eventName && !callback){
          eventMap[eventName] = [];
        }
        // 移除一个事件的一个监听
        else if(eventName && callback){
          let callbackArr = eventMap[eventName];
          eventMap[eventName] = callbackArr.filter(item=>{
            return item != callback;
          })
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:wx 事件车

          本文链接:https://www.haomeiwen.com/subject/labkoqtx.html