Tips:
以下讨论基于uni-app 2.0版本(v2.0.0-27920200529001),在微信小程序中实测有效,其他平台未测试
开发中的一个需求是点击卡片跳转详情页面,卡片上有一个switch按钮,要求点击按钮时仅触发按钮的change事件不做页面跳转。
使用官方文档中的.stop事件修饰符时,发现无法阻止change事件。而若是两个click事件则可以阻止子元素向上冒泡。示例代码如下:
无效示例:
<view class="my-style" @click="goPage">
<switch checked @change.stop="switch1Change" />
</view>
有效示例:
<view class="my-style" @click="goPage">
<view @click.stop="switch1Change">
<switch checked @change="switch1Change" />
</view>
</view>
方案问题
本方案实际上是给switch元素绑定了两个事件,一个change,一个tap,并都指向了同一个method,且需要在方法中过滤click触发的事件,不够优雅。不过目前暂未有更好的解决办法。