小程序事件系统 —— 32 事件系统 - 事件分类以及阻止事件冒泡

在微信小程序中,事件分为 冒泡事件非冒泡事件

冒泡事件:当一个组件的事件被触发后,该事件会向父节点传递;(如果父节点中也绑定了一个事件,父节点事件也会被触发,也就是说子组件的事件和父组件的事件都会被触发);

非冒泡事件:当一个组件的事件被触发后,该事件不会向父节点传递;(如果父节点绑定了事件,父节点的事件不会被触发,只有组件本身的事件会触发);

在微信小程序中,使用 bind 绑定的事件,会触发事件冒泡,如果想阻止事件冒泡,可以使用 catch 来绑定事件;

下面使用微信开发者工具来演示一下,在基于上一节的内容下进行演示,在 pages/cate/cate.wxml 中添加以下代码:

html 复制代码
<view class="catch" bind:tap="parentHandler">
  <button bind:tap="btnHandler">按钮</button>
</view>

在 pages/cate/cate.scss 中添加以下样式代码:

css 复制代码
.catch {
  display: flex;
  height: 300rpx;
  background-color: skyblue;
  align-items: center;
}

在 pages/cate/cate.js 中添加以下函数:

javascript 复制代码
Page({
  parentHandler(){
    console.log('父组件绑定的事件')
  },

  btnHandler(){
    console.log('子组件触发的事件')
  }
})

编写完毕后,点击重新编译,点击页面的按钮,可以看到子组件和父组件绑定的事件都触发了,如下:

如果想实现点击子组件按钮的时候,只触发子组件的事件,父组件的事件不触发,则需要阻止子组件的事件冒泡;如果想阻止子组件的事件冒泡,就需要更改一下绑定事件的方式,我们需要把子组件绑定事件的方式从 bind:tap 修改为 catch:tap,如下:

html 复制代码
<view class="catch" bind:tap="parentHandler">
  <button catch:tap="btnHandler">按钮</button>
</view>

重新运行,点击按钮,可以发现父组件的事件没有触发,如下:

参考视频:尚硅谷微信小程序开发教程

相关推荐
fakaifa12 小时前
点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
小程序·uni-app·php·源码下载·点大餐饮·扫码点单
说私域18 小时前
基于开源 AI 大模型 AI 智能名片 S2B2C 商城小程序视角下的企业组织能力建设与破圈升级
人工智能·小程序
fakaifa1 天前
【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
人工智能·小程序·uni-app·php·crmeb·源码下载·crmebpro
2501_915918411 天前
iOS 应用上架全流程实践,从开发内测到正式发布的多工具组合方案
android·ios·小程序·https·uni-app·iphone·webview
上海云盾第一敬业销售2 天前
小程序被爬虫攻击,使用waf能防护吗?
爬虫·小程序
suncentwl2 天前
做一个答题pk小程序多少钱?
小程序·答题小程序·知识竞赛·答题pk软件
说私域2 天前
基于开源链动2+1模式AI智能名片S2B2C商城小程序的流量转化策略研究
人工智能·小程序
咸虾米_2 天前
微信小程序通过uni.chooseLocation打开地图选择位置,相关设置及可能出现的问题
微信小程序·小程序·uniapp开发·小程序地图api
未来之窗软件服务2 天前
蔬菜批发小程序:生产商的数字化转型利器——仙盟创梦IDE
小程序·自动化·仙盟创梦ide·东方仙盟·蔬菜批发·批发系统
数据皮皮侠2 天前
最新上市公司业绩说明会文本数据(2017.02-2025.08)
大数据·数据库·人工智能·笔记·物联网·小程序·区块链