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

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

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

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

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

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

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

<view class="catch" bind:tap="parentHandler">
  <button bind:tap="btnHandler">按钮</button>
</view>

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

.catch {
  display: flex;
  height: 300rpx;
  background-color: skyblue;
  align-items: center;
}

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

Page({
  parentHandler(){
    console.log('父组件绑定的事件')
  },

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

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

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

<view class="catch" bind:tap="parentHandler">
  <button catch:tap="btnHandler">按钮</button>
</view>

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

在这里插入图片描述
参考视频:尚硅谷微信小程序开发教程

相关文章:

  • 智能机器人学习机WT3000A AI芯片方案-自然语音交互 打造沉浸式学习体验
  • licheepi nano usb RNDIS连接外网方法及使用
  • 三维建模与视频融合(3D-Video Integration)技术初探。
  • STM32使用无源蜂鸣器
  • Networking Based ISAC Hardware Testbed and Performance Evaluation
  • DeepSeek开源Day1:FlashMLA技术详解
  • sap pp 学习笔记
  • esp32 arduino开发常用函数(需要和乐鑫的arduino文档配合使用)
  • JavaScript高级特性剖析:闭包
  • 前端开发怎么处理数据的安全
  • 类型断言, 类型注解
  • Javaweb后端spring事务管理 事务四大特性ACID
  • AI档案审核2
  • 操作系统 2.9-进程同步和信号量
  • Android A/B System OTA分析提取 payload 在ZIP包中的 offset 和 size
  • 电脑网络出现问题!简单的几种方法解除电脑飞行模式
  • 解决AWS EC2实例无法使用IAM角色登录AWS CLI
  • Gradle本地配置文件分享
  • 【大模型基础_毛玉仁】2.2 大语言模型架构概览
  • DeepSeek教我写词典爬虫获取单词的音标和拼写
  • wordpress稳定版/厦门百度整站优化服务
  • 法语网站建设/百度收录入口
  • 网站建设维护问题/网站搜索排优化怎么做
  • mugeda做网站/优就业seo课程学多久
  • 最好的网站模板下载网站/seoul是什么品牌
  • 模板建站难度大/海南百度竞价推广