vue入门------简单购物车功能实现(全选,数量加减,价格加减)

Posted zhaoxinran997

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue入门------简单购物车功能实现(全选,数量加减,价格加减)相关的知识,希望对你有一定的参考价值。

简易购物车功能(无任何布局 主要是功能)
  • 数量的加减
  • 商品的总价钱
  • 全选与全不选
  • 删除(全选、价格 受影响)

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

    <div id="box">
        全选:<input type="checkbox" @click="handleAllChecked($event)" v-model="isAllChecked"/>
        <ul>
          <li v-for="data,index in list" :key="data.id" style="overflow: hidden;">
            <input type="checkbox" :value="data" v-model="checkgroup" style="float: left;"
            @change="handleItemChange()"/>
            <div style="float: left;">
              <div>{{data.name}}</div>
              <div>价格:{{data.price}}</div>
              <!-- <div>数量:{{data.number}}</div> -->
            </div>

            <div style="float: left;margin-left: 20px;">
              <button @click="handleDel(data)">-</button>
              {{data.number}}
              <button @click="data.number++">+</button>
            </div>

            <div style="float: right;">
              <button @click='handleRemove(index,data.id)'>remove</button>
            </div>
          </li>
        </ul>
       
        {{checkgroup}}

        <p>总金额:{{ getSum() }}</p>
    </div>
    
    <script type="text/javascript">
       var vm =  new Vue({
          el:"#box",
          data:{
            name:"kerwin",
            checkgroup:[],
            isAllChecked:false,
            list:[
                {
                      name:"商品1",
                      price:10,
                      number:1,
                      id:"1",
                },
                    {
                      name:"商品2",
                      price:20,
                      number:2,
                      id:"2",
                    },
                    {
                      name:"商品3",
                      price:30,
                      number:3,
                      id:"3",
                    }
              ]
          },
          methods: {
            // 每个chekcbox 改变触发, 判读数组的长度与list长度
            handleItemChange(){
              console.log(this.checkgroup.length)
              if(this.checkgroup.length===this.list.length && this.list.length !== 0 ){
                //全选chekcbox勾上
                this.isAllChecked = true
              }else{
                // 取消checkbox勾选
                this.isAllChecked = false
              }
            },

            //全选按钮处理
            handleAllChecked(evt){
             
              if(evt.target.checked){
                //全选中
                this.checkgroup = this.list
              }else{
                //全不选中
                this.checkgroup = []
              }
            },
            //商品减少
            handleDel(data){
              data.number--
              if(data.number===0){
                data.number =1
              }
            },
         
            //计算总金额
            getSum(){
              var sum = 0;
              for(var i in this.checkgroup){
                sum += this.checkgroup[i].price*this.checkgroup[i].number
              }
              return sum
            },
            //删除数据       
            handleRemove(index,id) {
              //list
              this.list.splice(index,1)
              //checkgroup
              this.checkgroup =this.checkgroup.filter(item => item.id !== id)

              this.handleItemChange()         
            }
          },
        })
    </script>

以上是关于vue入门------简单购物车功能实现(全选,数量加减,价格加减)的主要内容,如果未能解决你的问题,请参考以下文章

vue.js实现完整购物车实例

vue.js实战——购物车练习(包含全选功能)

完善慕课网Vue2.0购物车功能

vue购物车出现了一个bug,一个单选按钮取消选中,为什么全部按钮包括全选按钮都取消选中了?

vue中使用计算属性巧妙的实现多选框的“全选”

vue2购物车ch3-(过滤器使用 单件商品金额计算 全选全不选 总金额计算 删除商品功能)