极简购物车

需求

  1. 可以单独选中商品
  2. 可以一键选中全部商品
  3. 可以动态改变商品数量
  4. 商品最小数量为1
  5. 可以动态计算选中商品价格

效果图

代码

  1. 通过cdn引入vue
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>
    
  2. html部分
    <div id="app">
      <ul>
        <input type="checkbox" v-model="checkAll" @change="checkAllProduct">全选
        <li v-for="item in list">
          <input type="checkbox" :value="item" v-model="checkList">{{item}}
          <button @click="changeNum(item,-1)" :disabled="item.num === 1">-</button>{{item.num}}<button @click="changeNum(item,1)">+</button>
        </li>
        <p>总价:{{getAllPrice}}</p>
      </ul>
    </div>
    
  3. js部分
    <script>
      var vm = new Vue({
        el:'#app',
        data:{
          checkAll: false, // 是否全选
          checkList: [],   // 选中商品列表
          list:[          // 购物车商品列表
            {name:"鼠标",price:20,num:1},
            {name:"键盘",price:30,num:2},
            {name:"水杯",price:10,num:1},
          ]
        },
        computed: {
          // 计算选中商品总价格
          getAllPrice(){
            // 检测是否选中所有的商品
            this.checkAll = this.checkList.length === this.list.length ? true : false;
            return this.checkList.reduce((sum,item) => sum += item.num * item.price, 0);
          }
        },
        methods: {
          // 点击全选操作
          checkAllProduct(){
            this.checkList = this.checkAll ? this.list:[];
          },
          // 更改商品数量
          changeNum(item,n){
            if (!(item.num === 1 && n === -1)){
              item.num += n;
            }
          }
        },
      })
    </script>
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值