返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序实现购物车页面
  • 456
分享到

微信小程序实现购物车页面

2024-04-02 19:04:59 456人浏览 独家记忆
摘要

微信小程序实现购物车页面,供大家参考,具体内容如下 先来弄清楚购物车的需求。 单选、全选和取消,而且会随着选中的商品计算出总价单个商品购买数量的增加和减少删除商品。当购物车为空时,

微信小程序实现购物车页面,供大家参考,具体内容如下

先来弄清楚购物车的需求。

单选、全选和取消,而且会随着选中的商品计算出总价
单个商品购买数量的增加和减少
删除商品。当购物车为空时,页面会变为空购物车的布局

根据设计图,我们可以先实现静态页面。接下来,再看看一个购物车需要什么样的数据。

首先是一个商品列表(carts),列表里的单品需要:商品图(image),商品名(title),单价(price),数量(num),是否选中(selected),商品id(id)
然后左下角的全选,需要一个字段(selectAllStatus)表示是否全选了
右下角的总价(totalPrice)
最后需要知道购物车是否为空(hasList)
知道了需要这些数据,在页面初始化的时候我们先定义好这些。

代码实现

初始化

Page({
 data: {
  carts:[],    // 购物车列表
  hasList:false,   // 列表是否有数据
  totalPrice:0,   // 总价,初始为0
  selectAllStatus:true // 全选状态,默认全选
 },
 onShow() {
  this.setData({
   hasList: true,  // 既然有数据了,那设为true吧
   carts:[
   {id:1,title:'新鲜芹菜 半斤',image:'/image/s5.png',num:4,price:0.01,selected:true},
   {id:2,title:'素米 500g',image:'/image/s6.png',num:1,price:0.03,selected:true}
   ]
  });
  },
})

购物车列表数据我们一般是通过请求服务器拿到的数据,所以我们放在生命周期函数里给 carts 赋值。想到每次进到购物车都要获取购物车的最新状态,而onLoad和onReady只在初始化的时候执行一次,所以我需要把请求放在 onShow 函数里。(这里先拿点假数据冒充一下吧)

布局wxml

修好之前写好的静态页面,绑定数据。

<view class="cart-box">
 <!-- wx:for 渲染购物车列表 -->
 <view wx:for="{{carts}}">
  
  <!-- wx:if 是否选择显示不同图标 -->
  <icon wx:if="{{item.selected}}" type="success" color="red" bindtap="selectList" data-index="{{index}}" />
  <icon wx:else type="circle" bindtap="selectList" data-index="{{index}}"/>
   
  <!-- 点击商品图片可跳转到商品详情 -->
  <navigator url="../details/details?id={{item.id}}">
   <image class="cart-thumb" src="{{item.image}}"></image>
  </navigator>
   
  <text>{{item.title}}</text>
  <text>¥{{item.price}}</text>
   
  <!-- 增加减少数量按钮 -->
  <view>
   <text bindtap="minusCount" data-index="{{index}}">-</text>
   <text>{{item.num}}</text>
   <text bindtap="addCount" data-index="{{index}}">+</text>
  </view>
   
  <!-- 删除按钮 -->
  <text bindtap="deleteList" data-index="{{index}}"> × </text>
 </view>
</view>
 
<!-- 底部操作栏 -->
<view>
 <!-- wx:if 是否全选显示不同图标 -->
 <icon wx:if="{{selectAllStatus}}" type="success_circle" color="#fff" bindtap="selectAll"/>
 <icon wx:else type="circle" color="#fff" bindtap="selectAll"/>
 <text>全选</text>
  
 <!-- 总价 -->
 <text>¥{{totalPrice}}</text>
</view>

计算总价

总价 = 选中的商品1的 价格 * 数量 + 选中的商品2的 价格 * 数量 + …
根据公式,可以得到

getTotalPrice() {
 let carts = this.data.carts;     // 获取购物车列表
 let total = 0;
 for(let i = 0; i<carts.length; i++) {   // 循环列表得到每个数据
  if(carts[i].selected) {     // 判断选中才会计算价格
   total += carts[i].num * carts[i].price;  // 所有价格加起来
  }
 }
 this.setData({        // 最后赋值到data中渲染到页面
  carts: carts,
  totalPrice: total.toFixed(2)
 });
}

页面中的其他操作会导致总价格变化的都需要调用该方法。

选择事件

点击时选中,再点击又变成没选中状态,其实就是改变 selected 字段。通过 data-index="{{index}}" 把当前商品在列表数组中的下标传给事件。

selectList(e) {
 const index = e.currentTarget.dataset.index; // 获取data- 传进来的index
 let carts = this.data.carts;     // 获取购物车列表
 const selected = carts[index].selected;   // 获取当前商品的选中状态
 carts[index].selected = !selected;    // 改变状态
 this.setData({
  carts: carts
 });
 this.getTotalPrice();       // 重新获取总价
}

全选事件

全选就是根据全选状态 selectAllStatus 去改变每个商品的 selected

selectAll(e) {
 let selectAllStatus = this.data.selectAllStatus; // 是否全选状态
 selectAllStatus = !selectAllStatus;
 let carts = this.data.carts;
 
 for (let i = 0; i < carts.length; i++) {
  carts[i].selected = selectAllStatus;   // 改变所有商品状态
 }
 this.setData({
  selectAllStatus: selectAllStatus,
  carts: carts
 });
 this.getTotalPrice();        // 重新获取总价
}

增减数量

点击+号,num加1,点击-号,如果num > 1,则减1

// 增加数量
addCount(e) {
 const index = e.currentTarget.dataset.index;
 let carts = this.data.carts;
 let num = carts[index].num;
 num = num + 1;
 carts[index].num = num;
 this.setData({
  carts: carts
 });
 this.getTotalPrice();
},
// 减少数量
minusCount(e) {
 const index = e.currentTarget.dataset.index;
 let carts = this.data.carts;
 let num = carts[index].num;
 if(num <= 1){
  return false;
 }
 num = num - 1;
 carts[index].num = num;
 this.setData({
  carts: carts
 });
 this.getTotalPrice();
}

删除商品

点击删除按钮则从购物车列表中删除当前元素,删除之后如果购物车为空,改变购物车为空标识hasList为false

deleteList(e) {
 const index = e.currentTarget.dataset.index;
 let carts = this.data.carts;
 carts.splice(index,1);    // 删除购物车列表里这个商品
 this.setData({
  carts: carts
 });
 if(!carts.length){     // 如果购物车为空
  this.setData({
   hasList: false    // 修改标识为false,显示购物车为空页面
  });
 }else{        // 如果不为空
  this.getTotalPrice();   // 重新计算总价格
 } 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 微信小程序实现购物车页面

本文链接: https://lsjlt.com/news/164680.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序实现购物车页面
    微信小程序实现购物车页面,供大家参考,具体内容如下 先来弄清楚购物车的需求。 单选、全选和取消,而且会随着选中的商品计算出总价单个商品购买数量的增加和减少删除商品。当购物车为空时,...
    99+
    2024-04-02
  • 微信小程序中如何实现购物车
    这篇文章给大家分享的是有关微信小程序中如何实现购物车的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先上效果图购物车实现cart.wxml<import src=&...
    99+
    2024-04-02
  • 微信小程序实现简单购物车小功能
    本文实例为大家分享了微信小程序实现简单购物车的具体代码,供大家参考,具体内容如下 微信小程序定制好看的购物车页面,实现购物车功能,希望对您有所帮助! 1. 应用场景2. 思路分析3....
    99+
    2024-04-02
  • 微信小程序中如何实现购物车功能
    小编给大家分享一下微信小程序中如何实现购物车功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需求先来弄清楚购物车的需求。单选、...
    99+
    2024-04-02
  • 微信小程序实现简单的购物车功能
    本文实例为大家分享了微信小程序实现简单购物车的具体代码,供大家参考,具体内容如下 实现一个购物车页面,需要哪些数据。整理下大概如下:一个购物车商品列表(carts),列表里的单个it...
    99+
    2024-04-02
  • python实现购物车小程序
    本文实例为大家分享了python实现购物车小程序的具体代码,供大家参考,具体内容如下 功能实现: (1)可以查看购物车的商品,和余额 (2)可以显示商品列表,根据商品的编号选择商品 ...
    99+
    2024-04-02
  • 微信小程序实现购物车选择规格颜色效果
    本文实例为大家分享了微信小程序实现购物车选择规格颜色效果的具体代码,供大家参考,具体内容如下 wxml: <view>   <view>规格:</vie...
    99+
    2024-04-02
  • 微信小程序购物车功能如何开发
    这篇“微信小程序购物车功能如何开发”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序购物车功能如何开发”文章吧。ind...
    99+
    2023-06-26
  • 小程序实现购物车完整版
    小程序实现完整购物车[全选/反选计算金额/加减计算数量跟金额],供大家参考,具体内容如下 一、wxml页面代码模块 <view wx:if="{{hasList}}">...
    99+
    2024-04-02
  • Python实现简单购物车小程序
    本文实例为大家分享了Python实现简单购物车小程序的具体代码,供大家参考,具体内容如下 要求 代码 # --*--coding:utf-8--*-- # Author: 村雨 ...
    99+
    2024-04-02
  • python3 购物车小程序
    #Author Chen #定义商品列表List_of_commodities = [('Iphone',6888),('Mac Pro',12888),('Bike',3000),('Book',34),('Cut',98),] #定义...
    99+
    2023-01-31
    购物车 程序
  • 微信小程序怎么实现购物车选择规格颜色效果
    这篇文章主要讲解了“微信小程序怎么实现购物车选择规格颜色效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序怎么实现购物车选择规格颜色效果”吧!具体内容如下:wxml:<vie...
    99+
    2023-06-28
  • 微信小程序实现登录页面
    本文实例为大家分享了微信小程序实现登录页面的具体代码,供大家参考,具体内容如下 实现在进入微信小程序首页前的登录验证页面,这里有两种方法,但其实原理都是一样的。 1. 在首页中加入一...
    99+
    2024-04-02
  • 微信小程序实现购物商城(附源码)
    2018年本人做了一个淘宝购物返利的微信公众号,截至目前已运营了近5年的时间,也陆续积累了不少粉丝。近日,有部分用户反馈是否可以在公众号上展示促销商品列表,而且要具备搜索功能。为感谢粉丝朋友们的长期支持,笔者耗时一周,利用茶余饭后时间,开发...
    99+
    2023-09-04
    微信小程序 小程序 滑动tabBar 购物商城 图片轮播 Powered by 金山文档
  • 怎么使用Android实现购物车页面及购物车效果
    这篇文章主要介绍了怎么使用Android实现购物车页面及购物车效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android实现购物车页面及购物车效果(点击动画),具体如下...
    99+
    2023-05-30
    android
  • 小程序怎么实现购物车抛物线动画
    这篇文章主要介绍“小程序怎么实现购物车抛物线动画”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“小程序怎么实现购物车抛物线动画”文章能帮助大家解决问题。分析要实现抛物线动画,我当时想到的是用插件的方式...
    99+
    2023-06-26
  • 小程序怎么实现点餐小程序购物车效果
    这篇文章主要讲解了“小程序怎么实现点餐小程序购物车效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“小程序怎么实现点餐小程序购物车效果”吧!自己的第一个点餐小程序,主要包括左右菜单联动、点击...
    99+
    2023-06-26
  • Python如何实现简单购物车小程序
    小编给大家分享一下Python如何实现简单购物车小程序,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下要求代码# --*--coding:utf-8--*--# Author: 村雨...
    99+
    2023-06-29
  • 微信小程序实现车牌键盘
    本文实例为大家分享了微信小程序实现车牌键盘的具体代码,供大家参考,具体内容如下 一、效果图 二、代码 plateNumKeyboard.wxml <view class="p...
    99+
    2024-04-02
  • python编写购物车小程序
     #练习#程序购物车#启动程序后,让用户输入工资,  然后打印商品列表,允许用户根据商品编号购买商品用户选择商品后 #检测余额是否够,够就直接扣款,不够就提醒可随时退出,退出时,打印已购买商品和余额  commdity_dict={ ...
    99+
    2023-01-30
    购物车 程序 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作