vant小程序 Stepper 步进器阻止事件冒泡

vant官方文档事件

事件名 说明 回调参数
bind:change 当绑定值变化时触发的事件 event.detail: 当前输入的值

每次点击加或减都会触发我顶层view的跳转事件

微信开发文档里介绍

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

所以尝试catch:change其结果依旧向上冒泡

微信开发文档里还有一条说明

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

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

我又尝试将顶层的bindtap事件替换成mut-bind:tap,步进器确实不冒泡了,但是顶层的跳转事件我完全触发不了

直到我看到了 mark

当事件触发时,事件冒泡路径上所有的 mark 会被合并,并返回给事件回调函数。(即使事件不是冒泡事件,也会 mark 。)

想到了一个曲线救国的办法在van-stepper标签外嵌套一层view
加上mark属性

<view mark:stepperMark="bubbling">
<van-stepper value="{{ 1 }}" bind:change="onChange" />
</view>

再去顶层事件中判断,如果是冒泡触发e.mark.stepperMark肯定是有值存在,否则值就是undefined

 if (e.mark.stepperMark == undefined) {
      //触发事件
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值