赞
踩
还是假数据,接上一个页面,来进行点击事件,在上一个页面里添加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
- })
- },
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。