中文版

微信小程序事件绑定

发布时间:2023-12-14  浏览次数:95次

详情介绍

事件类别:

tap:点击事件;

longtap:长按事件;

touchstart:触摸开始;

touchend:触摸结束;

touchcansce:取消触摸;

事件绑定:

bind绑定;

catch绑定;(能阻止事件冒泡)
mut-bind   互斥事件绑定
 

普通事件绑定

事件绑定的写法类似于组件的属性,如:


  1. <view bindtap="handleTap">
  2.     Click here!
  3. </view>


如果用户点击这个 view ,则页面的 handleTap 会被调用。

事件绑定函数可以是一个数据绑定,如:


  1. <view bindtap="{{ handlerName }}">
  2.     Click here!
  3. </view>


此时,页面的 this.data.handlerName 必须是一个字符串,指定事件处理函数名;如果它是个空字符串,则这个绑定会失效(可以利用这个特性来暂时禁用一些事件)。

自基础库版本 1.5.0 起,在大多数组件和自定义组件中, bind 后可以紧跟一个冒号,其含义不变,如 bind:tap 。基础库版本 2.8.1 起,在所有组件中开始提供这个支持。

绑定并阻止事件冒泡

除 bind 外,也可以用 catch 来绑定事件。与 bind 不同, catch 会阻止事件向上冒泡。

例如在下边这个例子中,点击 inner view 会先后调用handleTap3handleTap2(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发handleTap2,点击 outer view 会触发handleTap1


  1. <view id="outer" bindtap="handleTap1">
  2.   outer view
  3.   <view id="middle" catchtap="handleTap2">
  4.     middle view
  5.     <view id="inner" bindtap="handleTap3">
  6.       inner view
  7.     </view>
  8.   </view>
  9. </view>

互斥事件绑定

自基础库版本 2.8.2 起,除 bind 和 catch 外,还可以使用 mut-bind 来绑定事件。一个 mut-bind 触发后,如果事件冒泡到其他节点上,其他节点上的 mut-bind 绑定函数不会被触发,但 bind 绑定函数和 catch 绑定函数依旧会被触发。

换而言之,所有 mut-bind 是“互斥”的,只会有其中一个绑定函数被触发。同时,它完全不影响 bind 和 catch 的绑定效果。

例如在下边这个例子中,点击 inner view 会先后调用 handleTap3 和 handleTap2 ,点击 middle view 会调用 handleTap2 和 handleTap1 。


  1. <view id="outer" mut-bind:tap="handleTap1">
  2.   outer view
  3.   <view id="middle" bindtap="handleTap2">
  4.     middle view
  5.     <view id="inner" mut-bind:tap="handleTap3">
  6.       inner view
  7.     </view>
  8.   </view>
  9. </view>

© 2024 重庆零玖云网络科技有限公司 版权所有,保留所有权利 注册人权利与责任注册人教育信息隐私政策