• 小程序多个商品数量之间的增减与总价


    wxml:

    <view class="container">
      <block  wx:for="{{carts}}"  wx:key="key">
        <view class='carts'>
          <text class='name'>{{item.title}}</text>
          <view class='subadd'>
            <text class='sub' data-index="{{index}}" bindtap='sub'>-</text>
            <text class='num'>{{item.num}}</text>
            <text class='add' data-index="{{index}}" bindtap='add'>+</text>
          </view>
          <text class='deleted' bindtap="deleteList" data-index="{{index}}">X</text>
        </view>
      </block>
      <view>总价:{{totalPrice}}</view>
    </view>
    

     js文件设置一些初始值,模拟从服务器上获取的值,以便进行操作

    data: {
        carts:[
          {
            id:1,
            title:"新鲜芹菜 半斤1",
            num:0,
            price:1,
            selected:false
          },
          {
            id: 2,
            title: "新鲜芹菜 半斤2",
            num: 0,
            price: 1,
            selected: false
          },
          {
            id: 3,
            title: "新鲜芹菜 半斤3",
            num: 0,
            price: 1,
            selected: false
          },
          {
            id: 4,
            title: "新鲜芹菜 半斤4",
            num: 0,
            price: 1,
            selected: false
          },
          {
            id: 5,
            title: "新鲜芹菜 半斤5",
            num: 0,
            price: 1,
            selected: false
          },
        ],
        text:"nihao",
        selectAllStatus:false,
        totalPrice:0
      },
    

    商品数量之间的加减操作

    sub(e){
        const index = e.currentTarget.dataset.index;
        let carts = this.data.carts;
        let num = carts[index].num;
        if(num<=0){
          return false;
        }
        num = num - 1;
        carts[index].num = num;
        this.setData({
          carts:carts
        })
        this.getTotalPrice()
      },
      add(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()
      },
    

    计算所有商品的总价格

    getTotalPrice(e){
        let carts = this.data.carts;
        let sum = 0;
        for(let i=0;i<carts.length;i++){
          sum += carts[i].num*carts[i].price;
        }
        this.setData({
          totalPrice:sum.toFixed(2),
          carts:carts
        })
      },
    

    各个商品的删除操作

    deleteList(e){
        const index = e.currentTarget.dataset.index;
        let carts = this.data.carts;
        carts.splice(index,1);//splice(2,0)=>添加 splice(2,1)=>删除 splice(2,1,"Toll")=>将下标为2的值修改为Toll
        this.setData({
          carts:carts
        })
     },
    

    购物车中全选与全不选功能

    selectAll(e){
      //设置selectAllStatus的状态,来进行判断选中与不选中之间的差别 let carts = this.data.carts; let selectAllStatus = this.data.selectAllStatus; selectAllStatus = !selectAllStatus; for(let i=0;i<carts.length;i++){ carts[i].selected = selectAllStatus } this.setData({ selectAllStatus:selectAllStatus, carts:carts }) }

     

  • 相关阅读:
    wordpress调用函数大全
    Dedecms 数据库结构分析
    屏幕广播的实现(二)
    屏幕广播的实现(一)
    Alt+Ctrl+Del组合键的屏蔽
    关于钩子(HOOK)
    C# 线程入门 00
    C# 中 关键字 return break continue 详解
    Windows 网络命令
    vue自定义指令封装(加深印象)
  • 原文地址:https://www.cnblogs.com/dyy-dida/p/9633513.html
Copyright © 2020-2023  润新知