微信小程序 事件分类

发布于 2024-12-13 14:16:13 字数 2019 浏览 6 评论 0

冒泡事件

当一个组件上的事件被触发后,该事件会向父节点传递。

事件 - 微信开放文档 - developers.weixin.qq.com.png

非冒泡事件

当一个组件上的事件被触发后,该事件不会向父节点传递。除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件。

事件绑定

普通事件绑定

<view bindtap="handleTap">      //page 构造器里面定义的函数
    Click here!
</view>
<view bindtap="{{ handlerName }}">      //this.data.handlerName 是一个字符串,指定事件处理函数名
    Click here!
</view>

阻止事件冒泡

catch 会阻止事件向上冒泡

<view id="outer" bindtap="handleTap1">  //1
  outer view
  <view id="middle" catchtap="handleTap2">  //2
    middle view
    <view id="inner" bindtap="handleTap3">  //3 2
      inner view
    </view>
  </view>
</view>

互斥事件绑定

  • 使用 mut-bind 来绑定事件。
  • 一个 mut-bind 触发后,如果事件冒泡到其他节点上,其他节点上的 mut-bind 绑定函数不会被触发,但 bind 绑定函数和 catch 绑定函数依旧会被触发。
  • 换而言之,所有 mut-bind 是 互斥 的,只会有其中一个绑定函数被触发。同时,它完全不影响 bind 和 catch 的绑定效果。
<view id="outer" mut-bind:tap="handleTap1">     //1
outer view
<view id="middle" bindtap="handleTap2">   //2 1
  middle view
  <view id="inner" mut-bind:tap="handleTap3">     //3 2
    inner view
  </view>
</view>
</view>

捕获阶段触发事件

capture-bind ---> 捕获阶段绑定 capture-catch ---> 捕获阶段绑定并阻止进一步捕获和全部的冒泡

<view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2">
outer view
<view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
  inner view
</view>
</view>
//2 4 3 1
<view id="outer" bind:touchstart="handleTap1" capture-catch:touchstart="handleTap2">
outer view
<view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
  inner view
</view>
</view>
//2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

ゝ偶尔ゞ

暂无简介

文章
评论
25 人气
更多

推荐作者

hncloud

文章 0 评论 0

13545243122

文章 0 评论 0

探春

文章 0 评论 0

樱桃奶球

文章 0 评论 0

LR

文章 0 评论 0

J.smile

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文