当前位置: 首页 > news >正文

网页设计素材站客户管理软件crm排名

网页设计素材站,客户管理软件crm排名,注册人力资源公司大概要多少钱,建设银行如何注销网站信息微信小程序全局事件订阅 在Vue开发中,我们可能用过eventBus来解决全局范围内的事件订阅及触发逻辑,在微信小程序的开发中我们可能也也会遇到同样的需求,那么我们尝试下在小程序(原生小程序开发)中实现类似eventBus的事…

微信小程序全局事件订阅

在Vue开发中,我们可能用过eventBus来解决全局范围内的事件订阅及触发逻辑,在微信小程序的开发中我们可能也也会遇到同样的需求,那么我们尝试下在小程序(原生小程序开发)中实现类似eventBus的事件订阅功能。

全局事件订阅

  1. 全局实例
    在Vue中我们有new Vue得到的全局对象,小程序中对应的则是app对象,在小程序组件或者页面中可以通过getApp()获取;
  2. 事件订阅
    声明对象存储事件,示例中使用map存储eventMap,向存储器中存放需要被触发的事件
    // 注意 开发阶段热跟新时,eventMap的声明和触发可能存在异步问题,需要阻断eventMap声明在触发之后的情况,这个问题仅限开发阶段存在
    on(action, event) {if (eventMap && !eventMap.has(action)) {eventMap.set(action, event)}
    }
    
  3. 事件触发
    当业务逻辑需要触发时,调用emit触发指定事件
    emit(action, arg) {if (eventMap && eventMap.has(action)) {eventMap.get(action) && eventMap.get(action)(arg)}
    }
    
  4. 事件卸载
    当订阅的事件过多或者确定事件不在被触发时,及时卸载事件可以减少内存压力
    off(action) {if (eventMap && eventMap.has(action)) {eventMap.delete(action)}
    }
    

整体代码如下(文件:app.js):

const eventMap = new Map()
App({globalData: {count: 1},// 事件订阅on(action, event) {if (eventMap && !eventMap.has(action)) {eventMap.set(action, event)}},// 事件卸载off(action) {if (eventMap && eventMap.has(action)) {eventMap.delete(action)}},// 事件触发emit(action, arg) {if (eventMap && eventMap.has(action)) {eventMap.get(action) && eventMap.get(action)(arg)}}
})
页面或者组件中使用
  1. 订阅on,订阅自定义事件countAdd(自定义事件名),并且传入事件被触发后需要被触发的逻辑,这里的changeCount就是在事件被触发是订阅触发的数据,当然触发事件的参数可以来自emit也可以无参数
const app = getApp()
Page({data: {count: app.globalData.count,},created() {// 注册事件app.on('countAdd', this.changeCount.bind(this))},changeCount(count) {this.setData({count})}
})
  1. 发布emit,发布自定义事件countAdd(自定义事件名)来触发所有监听该事件的订阅者(既注册了on的组件或者页面),emit携带的参数也会被传递给自定义事件
const app = getApp()
Component({data: {count: app.globalData.count,},// 触发事件bindEvent() {app.emit('countAdd', this.data.count++)}
})

这里changeCount是最终被触发的事件,countAdd是在订阅服务中自定义的事件名,之所以不使用相同的事件名,主要是区分下。

整体事件触发逻辑如下:

  1. 先订阅事件 changeCount
  2. 业务需要触发的时候触发bindEvent
  3. emit到全局来调用监听的事件
http://www.mnyf.cn/news/15996.html

相关文章:

  • 上饶做网站公司如何推广品牌知名度
  • 网站做数据分析的意义怎样做网络推广
  • 关于做ppt的网站有哪些内容吗贵阳网站建设公司
  • 海盗湾的Wordpress安装seo网络推广教程
  • 网站上的广告怎么做无锡整站百度快照优化
  • 开个个人网站网站推广计划书范文
  • wordpress数据库设置淘宝标题优化网站
  • 旅游网站建设与设计小程序模板
  • 沧州*网站建设中国国家人事人才培训网
  • wordpress破解文章密码给你一个网站seo如何做
  • 聊城网站建设首选天成网络广告投放
  • 网站建设合同审查长沙网站包年优化
  • 网站建设的作用有哪些产品网络营销策划方案
  • 如何做网站页面免费推广网址
  • 做网站 人工智能网站定制
  • 基于jsp企业网站开发设计答辩ppt百度推广公司怎么代理到的
  • 用xp做网站是否先搭建iisdw网站制作
  • 360网站上做宣传要多少钱今日热搜榜排行榜
  • linux网站做301重定向网络营销的特点有哪些特点
  • 代刷网站怎么做软文广告经典案例600
  • app网站开发重庆app拉新平台
  • 科技小制作怎么做视频网站品牌seo培训
  • 网站导航栏注明做京东seo搜索优化
  • 标准件做啥网站少儿编程
  • 做网站需要多少带宽自己怎么做关键词优化
  • 深圳哪里有做网站如何提升百度关键词排名
  • 企业网站建设 推广站长统计网站
  • 有阿里云主机管理平台如何自己做网站郑州网站推广优化公司
  • 如何做摄影网站手机app安装下载
  • 网站部分版块显示正在建设如何注册一个平台