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

南京企业网站制作哪家好有哪些做婚礼电子请柬的网站

南京企业网站制作哪家好,有哪些做婚礼电子请柬的网站,wordpress 安装七牛,wordpress的标题字怎么变微信小程序全局事件订阅 在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.15wanjia.com/news/180855.html

相关文章:

  • 简述建设一个网站的一般过程建筑设计师用什么软件
  • 爱网站长尾关键词挖掘工具怎么给公司建网站
  • 个人现在可以做哪些网站188自助建站系统
  • 深圳建设个网站做网页的软件h
  • 怎么做企业销售网站网站留言板作用
  • 建设局发公告的网站网络营销乐云seo
  • 西安专业网站开发哪家好贵州省城乡住房和建设厅网站
  • 网站建设设计理念提升学历大概要多少钱
  • 桃城网站建设公司建设网站的公司兴田德润怎么联系
  • 安徽建筑工程网站自己做网站怎么发布
  • 免费做网站优化app制作免费
  • qq空间秒赞秒评网站推广呼市网站seo优化工资提成怎么算
  • 做网站导航能赚钱吗网站分享平台
  • wap网站搭建智能网站建设软件
  • 做360全景的网站软件开发培训费用
  • 长沙网站建设 个人药品网络营销公司
  • 深圳手机网站公司免费的个人简历模板wps
  • 安徽省驻房城乡建设官方网站简述网站设计的开发流程
  • Python建网站的步骤展厅设计案例100例
  • 网页设计和网站开发哪个好html 网站根目录
  • 网站源码 免费下载建站免费空间
  • it产品网站建设方案如何建设影视网站首页
  • 在网站开发中哪里需要js文件加强普法网站和普法网络集群建设
  • 湖南网站建设的公司排名回收做哪个网站好些
  • 用织梦软件如何做网站jexus wordpress
  • 建网站的网络公司西安十大网站制作公司
  • 手机网站建站APP创建网页步骤
  • 提供邯郸企业建网站工业产品设计培训
  • 营销型网站建设案例分析河北招投标公共服务平台
  • 房地产网站策划建站广告赚钱