zoukankan      html  css  js  c++  java
  • 微信购物车

    <view class="main">

        <view wx:if="{{hasList}}">
            <view class="cart-box">
                <view class="cart-list" wx:for="{{carts}}" wx:key="{{index}}">
                    <icon wx:if="{{item.selected}}" type="success" color="red" data-index="{{index}}"  class="cart-pro-select" bindtap="selectList"/>
                    <icon wx:else type="circle" class="cart-pro-select" data-index="{{index}}" bindtap="selectList"/>
                    <navigator url="../details/details?id={{item.id}}"><image class="cart-thumb" src="{{item.image}}"></image></navigator>
                    <text class="cart-pro-name">{{item.title}}</text>
                    <text class="cart-pro-price">¥{{item.price}}</text>
                    <view class="cart-count-box">
                        <text class="cart-count-down" bindtap="minusCount" data-obj="{{obj}}" data-index="{{index}}">-</text>
                        <text class="cart-count-num">{{item.num}}</text>
                        <text class="cart-count-add" bindtap="addCount" data-index="{{index}}">+</text>
                    </view>
                    <text class="cart-del" bindtap="deleteList" data-index="{{index}}">×</text>
                </view>
            </view>
            <view class="cart-footer">
                <icon wx:if="{{selectAllStatus}}" type="success_circle" color="#fff" class="total-select" bindtap="selectAll"/>
                <icon wx:else type="circle" color="#fff" class="total-select" bindtap="selectAll"/>
                <view class="order-icon">
                    <navigator url="../orders/orders"><image src="/image/icon3.png"></image></navigator>
                </view>
                <text>全选</text>
                <text class="cart-toatl-price">¥{{totalPrice}}</text>
            </view>
        </view>
        <view wx:else>
            <view class="cart-no-data">购物车是空的哦~</view>
        </view>
    </view>
    js部分
    // page/component/new-pages/cart/cart.js
    Page({
      data: {
        carts:[],               // 购物车列表
        hasList:false,          // 列表是否有数据
        totalPrice:0,           // 总价,初始为0
        selectAllStatus:true,    // 全选状态,默认全选
        obj:{
            name:"hello"
        }
      },
      onShow() {
        this.setData({
          hasList: 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}
          ]
        });
        this.getTotalPrice();
      },
      /**
       * 当前商品选中事件
       */
      selectList(e) {
        const index = e.currentTarget.dataset.index;
        let carts = this.data.carts;
        const selected = carts[index].selected;
        carts[index].selected = !selected;
        this.setData({
          carts: carts
        });
        this.getTotalPrice();
      },

      /**
       * 删除购物车当前商品
       */
      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
          });
        }else{
          this.getTotalPrice();
        }
      },

      /**
       * 购物车全选事件
       */
      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();
      },

      /**
       * 绑定加数量事件
       */
      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;
        const obj = e.currentTarget.dataset.obj;
        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();
      },

      /**
       * 计算总价
       */
      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)
        });
      }

    })
  • 相关阅读:
    PAT乙级-1037. 在霍格沃茨找零钱(20)
    PAT乙级-1041. 考试座位号(15)
    PAT乙级-1047. 编程团体赛(20)
    css3 实现 背景图片显示
    块级元素与行内元素(内联元素)的区别和联系
    JS变量
    导航条菜单的制作 滑动缓慢
    HTML中Id和Name的区别
    全面理解Javascript中Function对象的属性和方法
    理解盒子模型
  • 原文地址:https://www.cnblogs.com/dyzw/p/7718682.html
Copyright © 2011-2022 走看看