微信小程序加入购物车

还是假数据,接上一个页面,来进行点击事件,在上一个页面里添加bindtap,就可以wxml

<view class="shopping_cart"  bindtap="bindViewTab" >
    加入购物车
 </view> 
 <view bindtap="buynow" class="shopping_cart">立即购买</view> 

然后在写一下点击之后出现的加入数量的遮盖层wxml

<!--加入购物车遮盖层  -->
<view class="zan-dialog {{ showDialog ? 'zan-dialog--show' : '' }}" catchtouchmove='ture' >
    <view class="zan-dialog__mask" bindtap="zandialog"/>//取消弹窗
    <view class="zan-dialog__container">
        <view style="display: flex;">
             <view style="flex: 1;" style="width: 125rpx;height: 125rpx;">
                <image style="width: 100%;height: 100%;" src="{{list.url}}" ></image>
             </view>
             <view style="flex: 1;margin-left: 30rpx;">
                 <view>{{list.title}}</view>
                 <view>¥{{list.price}}
                 <span>库存:{{}}</span></view>
             </view> 
        </view>
        <view>数量</view>
        <view>
            <text class="decrease" bindtap="decrease">-</text>
            <text class="phonenumber">{{num}}</text>
            <text class="increase" bindtap="increase">+</text>
        </view>
    </view>
</view>

遮盖层css

/* 遮盖层 */
.zan-dialog__mask {
    position: fixed;
    top: 0;
    left: 0;
    overflow: hidden;
    z-index: 5;
    background: rgba(0, 0, 0, 0.5);
    height: 100vh;
    width: 100%;
    display: none;
   }
   
   .zan-dialog__container {
    position: fixed;
    bottom: 100rpx;
    width: 100%;
    height: 350rpx;
    background: #ffffff;
    transform: translateY(300%);
    transition: all 0.4s ease;
    z-index: 12;
   border-radius: 20rpx 20rpx 0rpx 0rpx;
   padding: 25rpx;
   }
   .zan-dialog--show .zan-dialog__container {
    transform: translateY(0);
   }
   
   .zan-dialog--show .zan-dialog__mask {
    display: block;
   }
 /*加减*/
   .decrease{
       padding: 8rpx 30rpx;
       border-top:1px solid #bbbbbb;
       border-left:1px solid #bbbbbb;
       border-bottom:1px solid #bbbbbb ;
   }
 .phonenumber{
    padding: 8rpx 30rpx;
    border: 1px solid #bbbbbb;
   }
   .increase{
    padding: 8rpx 30rpx;
    border-top:1px solid #bbbbbb ;
    border-right:1px solid #bbbbbb ;
    border-bottom:1px solid #bbbbbbbd ;
   }

接下来就是点击加入购物车按钮,出现弹窗以及取消和添加的js

遮盖层首先下data里的初始值是false
showDialog:flase
//加入购物车
bindViewTab:function(e){
   /* 先进行一个判断,判断数量是不是等于0,如果是的话showDialog=ture,如果不是的话 
    showDialog=flase,*/
  if(this.data.num === 0){
            this.setData({
              showDialog: ture
            })  
    } else {
       let productInfo = this.data.list//当前的数据
           productInfo.num = productInfo.num+this.data.num 
           //当前数据的数量等于当前数量加上现在输入的数量
           var shopping = wx.getStorageSync('shopping') || [];//变量等于本地储存或[]
               shopping.push(productInfo)//添加到变量里
            //判断物品id是否一样
               let idArr = []  //相同id放在同一数组中 
               let resultArr = []  //最终结果数组 
               for(let i = 0;i < shopping.length; i++){//遍历shopping
                  let index = idArr.indexOf(shopping[i].id)
                  if(index > -1){  //有相同id存在的话,获取index索引位置
                    resultArr[index].num += shopping[i].num  //取相同id的数量累加
                  }else{
                    idArr.push(shopping[i].id)
                    resultArr.push(shopping[i])
                  }
                }
              wx.setStorageSync('shopping',resultArr)//本地存储
              wx.showToast({
                title: '添加购物车成功',
                icon: 'success',
                duration: 2000,
              })
              this.setData({
                showDialog: false,
                num:0,//总数清理,方便下次使用
                jial:resultArr.length//数量的长度,就购物车图标上的数量
              })
            }
}

遮盖层的加减js 

//点击遮盖层最外面的黑色透明背景showDialog=false
 zandialog:function(){
      this.setData({
        showDialog:false
      })
    },
 //减
  decrease:function(e){
    if(this.data.num < 1){//判断小于1的时候
         wx.showToast({
            title: '不能再减了~',
            icon:'none'
          })
          return ;
        }
        var Num = this.data.num - 1;
        this.setData({//添加到data里面
          num: Num
        })
      },
  //加
  increase:function(e){
        var Num = this.data.num + 1;
        this.setData({
          num: Num
        })
      },

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值