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) {
//触发事件
}