微信小程序购物车请求服务器数据,微信小程序购物车案例
最近呢,我看到有人在问微信小程序的购物车怎么写,我呢就在这里写一写;
购物车主要的就是全选的判断、勾选单个物品判断是否全选、计算总价
效果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
}]
}
})
好了上面就是关于微信小程序购物车的例子,
如果有哪里有问题,或者你有什么好的建议或者意见请留言,谢谢
微信小程序购物车请求服务器数据,微信小程序购物车案例相关推荐
- 微信小程序获取云服务器数据,微信小程序云开发服务端数据库API 获取集合数据...
Collection.get / Query.get 获取集合数据,或获取根据查询条件筛选后的集合数据. 如果没有指定 limit,则默认最多取 20 条记录. 如果没有指定 skip,则默认从第 0 ...
- 微信小程序 解决请求服务器手机预览请求不到数据的方法
微信小程序 解决请求服务器手机预览请求不到数据的方法 微信小程序的文档中明确说明了所有的请求是必须使用https的,以没用过https,由于小程序,不得不接触到https,研究了好长时间把tomcat ...
- 微信小程序request请求封装;微信小程序封装request请求;uni-app小程序封装request请求;
本片封装了微信小程序request请求:为别是post get put请求,重点在request.js文件 1.新增四个文件 2.根目录下的utils下的request.js封装uni.request ...
- 小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信
Django服务器 解析小程序发送的json二进制字符串 https://blog.csdn.net/qq_25068917/article/details/81041048 http://www.c ...
- 基于微信小程序的个人健康数据管理系统小程序
文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/my ...
- 小程序模拟服务器,小程序模拟请求服务器json数据
那么,怎么请求服务器json数据? 如果你是一枚前端,不会写后端接口的话 又想测试数据,看自己写的效果的时候 不要慌 那么,把你的json放在服务器底下 模拟请求服务器json数据即可 步骤: 1用能 ...
- 微信第一个支持小程序版本号与服务器不符,微信功能又又又更新!第一个就让人不淡定…...
原标题:微信功能又又又更新!第一个就让人不淡定- 微信又又又更新了 近日微信发布了7.0.5内测版本 朋友圈可以发30秒小视频了 本次7.0.5版本最大的亮点,就是朋友圈也可以发30秒小视频!发送方法 ...
- 微信登录小程序授权显示服务器出错,微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)...
本文实例为大家分享了微信小程序授权登录解决方案的具体代码,供大家参考,具体内容如下 getUserInfoF:function(){ var that = this; wx.getSetting({ ...
- 微信小程序直播消耗服务器流量,微信小程序直播私域流量过程要用多久
满足品牌长线的规划,从追逐流量走向运营私域流量.不过,醉终能不能实现这个过程,或者这个私域流量过程要用多久,还得看微X信 的速度了.小程序直播上线很长一段时间,还是有很多用户不会用,小编写下此文,希望 ...
最新文章
- html DOM操作表格及样式
- Java如何通过WSDL文件来调用这些web service
- Java中善用通用的枚举对象类实现代码业务的判断
- 曾经我也迷茫,你还在迷茫吗?写给像我一样的在校计算机专业学生作者:Cat_Lee 来源:博客园 发布时间:2009-05-30 20:25 阅读:1104 次 原文链接 [收藏]
- python3精要(19)-全局变量global和工厂函数,lambda,变量作用范围,nonlocal
- 模板:拓展kmp(Z函数)
- 恭喜您被选为CSDN插件内测用户:点此领取福利
- 算法-冒泡排序和快速排序
- github上传文件 linux,第一次上传代码到github (Linux)
- FPGA实现FIR滤波器
- 阿里副总裁、达摩院自动驾驶负责人王刚离职!
- 基于飞桨PaddlePaddle的地标检索识别夺竞赛双料大奖,获奖方案全解析
- c语言输入一个整数打印出它是奇数还是偶数,1. 编写程序,输入一个整数,打印出它是奇数还是偶数....
- 浅谈essay、paper和dissertation的区别
- 批量取消腾讯微博关注
- MFC ListCtrl的cheek框的全选和反选
- www-authenticate
- 什么是云平台,云平台的分类和优势有哪些?
- MFC 窗口分割(Dlg 为例)
- 1分钟读懂 云支付(云收款)交易规则 云支付收费标准