yChainsan
yChainsan
  • 发布:2020-06-25 12:49
  • 更新:2022-12-13 23:51
  • 阅读:11574

解决uni-app事件冒泡的一种方案

分类:uni-app

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触发的事件,不够优雅。不过目前暂未有更好的解决办法。

2 关注 分享
b***@163.com 2***@qq.com

要回复文章请先登录注册

2***@qq.com

2***@qq.com

方法挺好!
2022-12-13 23:51
h***@aliyun.com

h***@aliyun.com

回复 h***@aliyun.com :
问题已解决,用slot="right"插槽,替换组件内的switch解决了。
2020-09-10 19:03
h***@aliyun.com

h***@aliyun.com

可是list列表的switch只是一个组件的属性,没有用slot,如何阻止冒泡?
2020-09-10 18:31