zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    如何获取一个进程的内存并监控
    js 如何全部替代一个子串为另一个子串
    在服务端应用中如何获得客户端 IP
    在前端开发中,如何获取浏览器的唯一标识
    JavaScript的数据结构快速学-链表的实现
    Si7006主要面向传统上使用的分立RH / T传感器的低精度的应用
    NRF52840与NRF52832的性能区别
    RFX2401C与RFX2402E的区别
    关于SI4432数据手册的简单讲解
    ESP32-DOWDQ6蓝牙&Wifi 两个可单独控制的 CPU 内核
  • 原文地址:https://www.cnblogs.com/zhaoxinran997/p/12305474.html
Copyright © 2011-2022 走看看