微信小程序加入购物车方法更新?

微信小程序加入购物车方法更新?,第1张

微信小程序的购物车功能

在商品列表页

index.wxml

中,给下单按钮绑定一个添加购物车的事件

addCart

,使用

catchtap

是不会冒泡,同时传入

data-item

,当前的商品,代码如下所示:

1

<view class="order" catchtap="addCart" data-item="{{ item }}">下单</view>

index.js

中,在

Page

中,定义

addCart

事件。对此,可以分析一下当点击按钮以后添加购物车的逻辑:

拿到点击要添加入到购物车的商品

判断该商品在不在购物车里面

如果不在, 把该商品添加到购物车里面, 并且新加一个字段

num = 1

如果在,修改改商品的

num

值 累加

addCart

中,第一步拿到该商品,通过

e.currentTarget.dataset

获取。第二步,判断该商品在不在购物车里面,根据

_id

尝试从购物车里面获取数据,看能不能获取的到。使用

try...catch

,在有值的情况下,把购物车里面的该商品的

num

值累加

,并且进行下单成功的提示;在没有值,把商品添加到购物车里面,并且进行下单成功的提示,最后调用

setTabBar()

方法修改底部购物车

解决方法:给绑定change事件的元素或组件另外添加@click.stop指向一个空函数,用来阻止冒泡

注:此方法主要用于mpvue,@click.stop是vue中阻止点击事件冒泡的方法。如果是原生小程序应该为绑定change事件的元素或组件添加catchtap绑定一个空函数

这是在用mpvue开发小程序时遇到一个问题,项目需要引用小程序的picker选择器组件,发现在点击picker选择器触发其change事件时会触发picker选择器外层父元素的点击事件(项目需要实现对一个模块进行点击跳转,同时要求模块内的一个子元素有选择器功能)

开始通过查看vue文档和小程序文档,找到两种方法,分别是vue的.stop阻止冒泡和小程序的catch前缀,但通过测试发现给change事件直接添加.stop或者catch没有用

最后选用了网上搜到的一个折中的方法,给picker选择器另外添加一个点击事件(或者给选择器的父元素添加点击事件),为新加的点击事件添加阻止冒泡方法,使点击事件指向一个空函数。这样也就间接的解决了change事件冒泡的问题

如果大家还有更好的方法,欢迎留言

bind事件绑定不会阻止冒泡事件向上冒泡

catch事件绑定可以阻止冒泡事件向上冒泡

当点击子集的 catchtap='child' 事件之后阻止冒泡事件向上冒泡,所以不会触发 bindtap='father'


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11757434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存