首页 > 其他分享 >自定义全局监听事件( $on $emit $off )

自定义全局监听事件( $on $emit $off )

时间:2023-05-18 10:57:44浏览次数:35  
标签:handlerGather 自定义 event item off data emit fn wx

app.js

App({
  handlerGather:{},
  onLaunch: function () {
    const _that = this
    wx.$on = function (event, fn) {
      if (Array.isArray(event)) {
        event.forEach(item=>{
          wx.$on(item, fn)
        })
      } else {
        ( _that.handlerGather[event] || (_that.handlerGather[event] = []
          ) ).push(fn)
      }
      return wx
    }

    wx.$emit = function (event, data) {
      const fn = (ev, d)=>{
        let len = _that.handlerGather[ev].length
        for (let i = 0; i < len; i++) {
          const ele = _that.handlerGather[ev][i];
          ele(d)
        }
      }
      if (Array.isArray(event)) {
        event.forEach(item=>{
          fn(item,data)
        })
      } else {
        fn(event,data)
      }
      return wx
    }
    wx.$off = function (event) {
      if (!_that.handlerGather[event]) return
      if (Array.isArray(event)) {
        event.forEach(item=>{
          if (_that.handlerGather[event]) {
            _that.handlerGather[event] = []
          }
        })
      } else{
        _that.handlerGather[event] = []
      }
      return wx
    }
  }
})

页面js 使用

onLoad() {
    wx.$on("test",(data)=>{
      console.log('test', data)
    })
    setTimeout(()=>{
      wx.$emit("test", "11111")
    },2000)
},
onUnload() {
    wx.$off("test")
},

  

标签:handlerGather,自定义,event,item,off,data,emit,fn,wx
From: https://www.cnblogs.com/luyaru/p/17411244.html

相关文章

  • PageOffice在线打开 word 文件,并且禁止复制
    在线打开word禁用拷贝的三种方式:1使用AllowCopy属性,效果:所有的word进程都不能进行拷贝操作2禁止word选择功能,效果:因为无法选择,所以无法拷贝3使用DisableCopyOnly属性,效果:禁止拷贝文档内容到外部,但内部是可以拷贝的,也可以从外部拷贝到word文档内部具体实现过......
  • 剑指 Offer 31. 栈的压入、弹出序列
    题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列{1,2,3,4,5}是某栈的压栈序列,序列{4,5,3,2,1}是该压栈序列对应的一个弹出序列,但{4,3,5,1,2}就不可能是该压栈序列的弹出序列。  ......
  • 【React】自定义水印方法
    创建水印方法:constsetWaterwark=({//使用ES6的函数默认值方式设置参数的默认取值container=document.body,width='250px',height='160px',textAlign='left',textBaseline='bottom',font='15pxM......
  • vue自定义组件——search-box
    github地址:https://github.com/lxmghct/my-vue-components组件介绍props:value/v-model:检索框的值,default:''boxStyle:检索框的样式,default:'position:fixed;top:0px;right:100px;'highlightColor:高亮颜色,default:'rgb(246,186,130)'......
  • 【Echarts】tooltip自定义提示框
    1组件可直接使用。2tooltip:{3show:true,4trigger:'axis',5confine:true,6padding:0,7borderWidth:0,8backgroundColor:'rgba(1,1,1,0)',9//axisPointer:{10......
  • 剑指 Offer 29. 顺时针打印矩阵
    题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 限制:0<=matrix.length<=1000<=matrix[i].length <=100   classSolution{publicint[]spiralOrder(intmatrix[][]){if(matrix.length==0)returnnewint[0];......
  • 代码随想录算法训练营第8天 | ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer
     第四章 字符串part01  今日任务  ●  344.反转字符串●  541. 反转字符串II●  剑指Offer 05.替换空格●  151.翻转字符串里的单词●  剑指Offer58-II.左旋转字符串  详细布置   344.反转字符串  建议: 本题是字符串基础题目,就是考察......
  • Linux- 环境变量和自定义配置
    环境变量查看查看当前用户的全部环境变量:env,可以结合env|grep筛选信息查看当前系统的全部环境变量:export查看指定环境变量:printenv$env_name或者echo$env_name清除指定环境变量的值:unset$env_name常用环境变量PATH可执行程序的搜索目录,可执行程序包括Linux......
  • AutoMagic设计思路简介及新增自定义关键字实例
    目录  简介  AutoMagic介绍  SeleniumKey介绍  自定义关键字简介AutoMagic是一个基于WebUI的自动化管理平台。为什么叫AutoMagic呢?因为自动化在执行起来的时候是一个很神奇的事情,它可以无人值守的模拟人的操作,就像魔术(Magic)一样。所以我给她取名叫AutoMagic。Aut......
  • GDI-OffsetClipRgn移动剪辑区域
     HRGNhrgn1=CreateRectRgn(10,10,200,200);//创建矩形区域HDChdc=::GetDC(m_hWnd);intn=SelectClipRgn(hdc,hrgn1);//选择剪切区域intn1=::OffsetClipRgn(hdc,50,0);//移动剪辑区域/*参数1:HDChdc设备环境句......