zoukankan      html  css  js  c++  java
  • Vue 简单实例 购物车4

    1、查看代码发现选中全选是由 check 样式控制的,所以我们要添加一个变量来控制是否全选:

    <span :class="['checkbox-btn', 'item-check-btn', allCheck ? 'check' : '']">
    
    <script>
    export default {
      data() {
        return {
          allCheck: false, // 是否全选
        }
      },
    }
    </script>

    2、给全选添加点击事件:

    <a href="javascipt:;" @click="getAllChecked">
      <span :class="['checkbox-btn', 'item-check-btn', allCheck ? 'check' : '']">
    
    <script>
    export default {
      methods: {
        // 点击全选和反选
        getAllChecked() {
          let flag = !this.allCheck
        }
      }
    }
    </script>

    我们发现每个商品都选中了才会变为全选,反之有一个商品没有选中,则不是全选状态。

    3、这里我们可以用计算属性来定义 allCheck :

    // 计算属性
    computed: {
        allCheck() {
          // every 当数组中每一项都返回 true,整体才返回 true;有一项返回 false,整体就返回 false
          return this.cartList.every(item => {
            return item.checked
          })
        }
    }

    注意:上面 data 里的 allCheck 变量记得注释掉,改用计算属性。

    4、继续 getAllChecked() 方法:

    // 点击全选和反选
    getAllChecked() {
          let flag = !this.allCheck
          this.cartList.forEach(item => {
            item.checked = flag
          })
    },

    这时点击全选就可以全部选中商品,反之则全部没选中。

    5、同时选中商品时计算总价

    同样定义计算属性,计算选中商品的价格总计:

    <div class="item-total">
         总价:
         <span class="total-price">{{ totalPrice | curreney }}</span>
    </div>
    
    <script>
    export default {
      // 计算属性
      computed: {
        // 总价
        totalPrice() {
          let money = 0
          this.cartList.forEach(item => {
            if (item.checked) {
              money += item.productNum * item.productPrice
            }
          })
          return money
        }
      }
    }
    </script>

    此时选中商品或改变商品数量,对应的总价随之改变。

  • 相关阅读:
    MYSQL中replace into的用法
    Typora自定义样式
    Advanced Installer轻松带你入门
    H2数据库入门,看这篇就对了
    Linux之vim的使用
    Linux文件上传与下载
    @ConfigurationProperties 注解使用姿势,这一篇就够了
    Javadoc 使用详解
    MySQL学习提升
    JS前端获取用户的ip地址的方法
  • 原文地址:https://www.cnblogs.com/joe235/p/12704164.html
Copyright © 2011-2022 走看看