操作步骤
步骤1:加载购物车列表
调用 wx.cloud.database().collection() 方法访问云端购物车数据库,将数据显示出来。
async loadCartsData(){let res = await carts_col.get()console.log('carts' , res)this.setData({carts : res.data})this.setCart(res.data)//统计总数},
步骤2:设置商品总价格和个数
将加载购物车数据库函数中,购物车的数据传入计算商品总价格与总个数的函数中,调用 forEach() 方法计算商品总价格与总个数。总价格是通过遍历购物车数据库中的元素,计算每一个商品的个数与其单价的乘积的总和得到的;总个数是通过遍历购物车数据库中每个商品的个数的总和来得到的。最后通过 setData() 来设置购物车页面中显示的总价格与总商品个数。
//统计总数setCart(carts){let totalCount=0let totalPrice=0carts.forEach(v =>{totalCount += v.numtotalPrice += v.num*v.price})this.setData({totalCount,totalPrice,})},
步骤3:修改商品数量
通过单击购物车页面的加减号按钮,调用 bindtap 属性触发对应添加购物车商品与减少购物车商品的功能函数,传入被单击商品的 ID,在功能函数中通过 ID 过滤购物车数据库中的商品,再调用 update() 方法,对指定商品的 num 的值进行加减操作。
//加一async addCount(e){//获取idlet id = e.currentTarget.dataset.id//修改num数量let res =await carts_col.doc(id).update({data:{num :db.command.inc(1)}})this.loadCartsData()await ml_showSuccess('添加成功')},//删除商品async deleteCount(e){//获取商品idlet id = e.currentTarget.dataset.id//修改num数量let res =await carts_col.doc(id).update({data:{num :db.command.inc(-1)}})console.log('res ----',res)console.log('id-------',e.currentTarget.dataset.num)await ml_showSuccess('删除成功')let num=await carts_col.doc(id).numconsole.log('num的值',num)if( num === 0 ){console.log('商品数量为0')}this.loadCartsData()},
效果如图所示: