最近呢,我看到有人在问微信小程序的购物车怎么写,我呢就在这里写一写;

购物车主要的就是全选的判断、勾选单个物品判断是否全选、计算总价

效果Gif图:

直接简单粗暴的上代码;

wxml代码:

全选

{{adminShow?'取消管理':'管理'}}

class='shop_img'

src='http://wxxapp.duapp.com/img/banner1.png'

mode='aspectFill'

catchtap='navshopdetailTap'>

{{item.name}}

{{item.types}}

¥{{item.price}}

class='minus_icon'

hidden='{{item.num<2}}'

src='../../img/minus_icon.png'

data-index='{{index}}'

data-types='minus'

catchtap='numchangeTap'>

class='minus_icon'

hidden='{{item.num>=2}}'

src='../../img/minus_icon_false.png'>

{{item.num}}

class='add_icon'

data-index='{{index}}'

data-types='add'

catchtap='numchangeTap'

src='../../img/add_icon.png'>

合计:¥{{total}}

结算

移除商品

加入收藏夹

接下来是wxss:

page{

background: #f3f7f7;

height: 100%;

width: 100%;

display: flex;

flex-direction: column;

}

.header{

padding: 0 20rpx;

background: #fff;

height: 90rpx;

display: flex;

border-bottom: 1px solid #efefef;

}

.check_box{

flex: 1;

display: flex;

line-height: 90rpx;

font-size: 30rpx;

}

.check_img{

width: 38rpx;

height: 38rpx;

margin-top:26rpx;

}

.check_text{

margin-left: 15rpx;

line-height: 90rpx;

}

.header_text{

font-size: 30rpx;

line-height: 90rpx;

padding:0 6rpx;

color: #ff9600;

}

.main{

flex: 1;

overflow:auto;/* winphone8和android4+ */

-webkit-overflow-scrolling: touch; /* ios5+ */

}

.shop{

background: #fff;

display: flex;

padding:20rpx;

border-bottom: 1px solid #efefef;

}

.shop_check_box{

margin-top: 45rpx;

}

.shop_img{

width: 180rpx;

height: 180rpx;

margin:0 20rpx;

}

.shop_detail{

flex: 1;

}

.shop_name{

font-size: 30rpx;

line-height: 40rpx;

display: block;

max-height: 80rpx;

word-break:break-all;

display:-webkit-box;

-webkit-line-clamp:2;

-webkit-box-orient:vertical;

overflow:hidden;

}.shop_type{

display: block;

font-size: 26rpx;

color: #ccc;

line-height: 50rpx;

}

.shop_detail_bottom{

display: flex;

}

.shop_price{

line-height: 50rpx;

flex: 1;

}

.num_change{

display: flex;

padding-top: 11rpx;

}

.shop_num{

line-height: 38rpx;

height: 38rpx;

width: 60rpx;

text-align: center;

font-size: 30rpx;

}

.add_icon,.minus_icon{

width: 38rpx;

height: 38rpx;

}

好了,接下来是js代码:

var app=getApp();

Page({

data: {

adminShow:false,//管理

shopcarData:[],//购物车数据

total:0,//总金额

allsel:false,//全选

selarr:[],//选择的货物

hintText:'',//提示的内容

hintShow:false//是否显示提示

},

//点击全选

allcheckTap:function(){

let shopcar=this.data.shopcarData,

allsel = !this.data.allsel,//点击全选后allsel变化

total=0;

for(let i=0,len=shopcar.length;i

shopcar[i].check=allsel;//所有商品的选中状态和allsel值一样

if(allsel){//如果为选中状态则计算商品的价格

total += shopcar[i].price * shopcar[i].num;

}

}

this.data.selarr=allsel?shopcar:[];//如果选中状态为true那么所有商品为选中状态,将物品加入选中变量,否则为空

this.setData({

allsel:allsel,

shopcarData: shopcar,

total:total,

selarr: this.data.selarr

});

},

//点击移除商品

deleteshopTap:function(){

var allsel = this.data.allsel,

shopcar=this.data.shopcarData,

selarr=this.data.selarr;

if(allsel){

shopcar=[];

this.setData({

allsel: false

});

}else{

console.log(selarr);

for(var i = 0, len = selarr.length;i

console.log(selarr[i].id);

for(var lens=shopcar.length-1,j=lens;j>=0;j--){

console.log(shopcar[j].id);

if(selarr[i].id==shopcar[j].id){

shopcar.splice(j, 1);

}

}

}

}

this.setData({

shopcarData:shopcar,

total:0

});

},

//点击加入收藏夹,这里按自己需求写吧

addcollectTap:function(){

},

//点击管理按钮,是否显示管理的选项

adminTap:function(){

this.setData({

adminShow: !this.data.adminShow

});

},

//点击单个选择按钮

checkTap:function(e){

let Index=e.currentTarget.dataset.index,

shopcar=this.data.shopcarData,

total=this.data.total,

selarr=this.data.selarr;

shopcar[Index].check = !shopcar[Index].check||false;

if(shopcar[Index].check){

total += shopcar[Index].num * shopcar[Index].price;

selarr.push(shopcar[Index]);

}else{

total -= shopcar[Index].num * shopcar[Index].price;

for(let i=0,len=selarr.length;i

if(shopcar[Index].id==selarr[i].id){

selarr.splice(i,1);

break;

}

}

}

this.setData({

shopcarData:shopcar,

total: total,

selarr: selarr

});

this.judgmentAll();//每次按钮点击后都判断是否满足全选的条件

},

//点击加减按钮

numchangeTap:function(e){

let Index=e.currentTarget.dataset.index,//点击的商品下标值

shopcar=this.data.shopcarData,

types=e.currentTarget.dataset.types,//是加号还是减号

total=this.data.total;//总计

switch(types){

case 'add':

shopcar[Index].num++;//对应商品的数量+1

shopcar[Index].check && (total +=parseInt(shopcar[Index].price));//如果商品为选中的,则合计价格+商品单价

break;

case 'minus':

shopcar[Index].num--;//对应商品的数量-1

shopcar[Index].check && (total -= parseInt(shopcar[Index].price));//如果商品为选中的,则合计价格-商品单价

break;

}

this.setData({

shopcarData:shopcar,

total: total

});

},

//判断是否为全选

judgmentAll:function(){

let shopcar=this.data.shopcarData,

shoplen=shopcar.length,

lenIndex=0;//选中的物品的个数

for(let i=0;i

shopcar[i].check && lenIndex++;

}

this.setData({

allsel: lenIndex == shoplen//如果购物车选中的个数和购物车里货物的总数相同,则为全选,反之为未全选

});

},

onLoad: function (options) {

},

onReady: function () {

},

/** * 生命周期函数--监听页面显示 */

onShow: function () {

var shopcarData = app.globalData.shopcarData,//这里我是把购物车的数据放到app.js里的,这里取出来,开发的时候视情况加载自己的数据

total=0,

selarr=this.data.selarr;

for(let i=0,len=shopcarData.length;i

if(shopcarData[i].check){

total+= shopcarData[i].num * shopcarData[i].price;

selarr.push(shopcarData[i]);

}

}

this.setData({

shopcarData: shopcarData,

total: total,

selarr: selarr

});

this.judgmentAll();//判断是否全选

}

最后是app.js里的购物车里的数据

App({

globalData:{

shopcarData: [{//购物车

id: '1',

name: '折后i啊手动阀就是点击发送的金佛啊是是假的佛山折后i啊手动阀就是点击发送的金佛啊是是假的佛山',

price: '230',

num: 1,

types: '白色/39码',

check:true

}, {

id: '2',

name: '啊哈额和福特好热惊讶所以就如同撒打发士大夫',

price: '332',

num: 1,

types: '粉色/38码'

}, {

id: '3',

name: '啊如何呀还是大范围推广哇额饿啊日hers的说法的事发生的',

price: '120',

num: 1,

types: '白色/41码',

check: true

}, {

id: '4',

name: '阿桑的歌也会更好的反对犯得上的事发生的',

price: '320',

num: 1,

types: '黑色/37码',

check: true

}, {

id: '5',

name: '阿桑的歌微软噶士大夫啊士大夫但是飞洒地方士大夫撒',

price: '630',

num: 1,

types: '白色/39码',

check: true

}]

}

})

好了上面就是关于微信小程序购物车的例子,

如果有哪里有问题,或者你有什么好的建议或者意见请留言,谢谢

微信小程序购物车请求服务器数据,微信小程序购物车案例相关推荐

  1. 微信小程序获取云服务器数据,微信小程序云开发服务端数据库API 获取集合数据...

    Collection.get / Query.get 获取集合数据,或获取根据查询条件筛选后的集合数据. 如果没有指定 limit,则默认最多取 20 条记录. 如果没有指定 skip,则默认从第 0 ...

  2. 微信小程序 解决请求服务器手机预览请求不到数据的方法

    微信小程序 解决请求服务器手机预览请求不到数据的方法 微信小程序的文档中明确说明了所有的请求是必须使用https的,以没用过https,由于小程序,不得不接触到https,研究了好长时间把tomcat ...

  3. 微信小程序request请求封装;微信小程序封装request请求;uni-app小程序封装request请求;

    本片封装了微信小程序request请求:为别是post get put请求,重点在request.js文件 1.新增四个文件 2.根目录下的utils下的request.js封装uni.request ...

  4. 小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信

    Django服务器 解析小程序发送的json二进制字符串 https://blog.csdn.net/qq_25068917/article/details/81041048 http://www.c ...

  5. 基于微信小程序的个人健康数据管理系统小程序

    文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/my ...

  6. 小程序模拟服务器,小程序模拟请求服务器json数据

    那么,怎么请求服务器json数据? 如果你是一枚前端,不会写后端接口的话 又想测试数据,看自己写的效果的时候 不要慌 那么,把你的json放在服务器底下 模拟请求服务器json数据即可 步骤: 1用能 ...

  7. 微信第一个支持小程序版本号与服务器不符,微信功能又又又更新!第一个就让人不淡定…...

    原标题:微信功能又又又更新!第一个就让人不淡定- 微信又又又更新了 近日微信发布了7.0.5内测版本 朋友圈可以发30秒小视频了 本次7.0.5版本最大的亮点,就是朋友圈也可以发30秒小视频!发送方法 ...

  8. 微信登录小程序授权显示服务器出错,微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)...

    本文实例为大家分享了微信小程序授权登录解决方案的具体代码,供大家参考,具体内容如下 getUserInfoF:function(){ var that = this; wx.getSetting({ ...

  9. 微信小程序直播消耗服务器流量,微信小程序直播私域流量过程要用多久

    满足品牌长线的规划,从追逐流量走向运营私域流量.不过,醉终能不能实现这个过程,或者这个私域流量过程要用多久,还得看微X信 的速度了.小程序直播上线很长一段时间,还是有很多用户不会用,小编写下此文,希望 ...

最新文章

  1. html DOM操作表格及样式
  2. Java如何通过WSDL文件来调用这些web service
  3. Java中善用通用的枚举对象类实现代码业务的判断
  4. 曾经我也迷茫,你还在迷茫吗?写给像我一样的在校计算机专业学生作者:Cat_Lee 来源:博客园 发布时间:2009-05-30 20:25 阅读:1104 次 原文链接 [收藏]
  5. python3精要(19)-全局变量global和工厂函数,lambda,变量作用范围,nonlocal
  6. 模板:拓展kmp(Z函数)
  7. 恭喜您被选为CSDN插件内测用户:点此领取福利
  8. 算法-冒泡排序和快速排序
  9. github上传文件 linux,第一次上传代码到github (Linux)
  10. FPGA实现FIR滤波器
  11. 阿里副总裁、达摩院自动驾驶负责人王刚离职!
  12. 基于飞桨PaddlePaddle的地标检索识别夺竞赛双料大奖,获奖方案全解析
  13. c语言输入一个整数打印出它是奇数还是偶数,1. 编写程序,输入一个整数,打印出它是奇数还是偶数....
  14. 浅谈essay、paper和dissertation的区别
  15. 批量取消腾讯微博关注
  16. MFC ListCtrl的cheek框的全选和反选
  17. www-authenticate
  18. 什么是云平台,云平台的分类和优势有哪些?
  19. MFC 窗口分割(Dlg 为例)
  20. 1分钟读懂 云支付(云收款)交易规则 云支付收费标准

热门文章

  1. Linux | Centos下几种CPU查看使用率的常用命令
  2. 最强 CNI 基准测试:Cilium 网络性能分析
  3. java调用hidl_Android HIDL 详解
  4. 解压 *.gz文件 gzip压缩
  5. CentOS-yum卸载docker环境
  6. Java 接口(interface)的定义与使用
  7. 张孝祥老师给我们的---该不该从大学退学的讨论
  8. 中兴新支点命令篇——用户管理命令
  9. 网页开发 net java_.net web开发技术路线图
  10. 数据库索引 建立方法