首页 > 其他分享 >2行JS代码实现Vue全选和反选

2行JS代码实现Vue全选和反选

时间:2022-09-01 07:44:08浏览次数:62  
标签:checkAll Vue letters 反选 JS item letter false check

实现效果:

第一行:子选项的选中状态 等于 全选框的状态

this.letters.forEach(item => item.check = this.checkAll)

第二行: 使用数组 every 方法的特性,数组的每一项均满足某一条件时,结果为 true

也可以使用数组的 filter方法,判断返回子选项为 true的列表的长度,等同于数据源的长度时,可认定为全选状态,否则非全选

this.checkAll = this.letters.filter(item => item.check).length == this.letters.length

this.checkAll = this.letters.every(item => item.check)

完整 demo 参考:

<template>
  <div>
    <table border="1">
      <thead>
        <tr>
          <th><input type="checkbox" v-model="checkAll" @change="checkAllChange"> </th>
          <th>字母</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in letters" :key="item.id">
          <td><input type="checkbox" v-model="item.check" @change="checkChange"></td>
          <td>{{item.letter}}</td>
          <td><button>删除</button></td>
        </tr>
      </tbody>
    </table>
  </div>
</template>
<script>
export default {
  data() {
    return {
      checkAll: false,
      letters: [
        { letter: 'A', id: 'A', check: false },
        { letter: 'B', id: 'B', check: false },
        { letter: 'C', id: 'C', check: false },
        { letter: 'D', id: 'D', check: false },
        { letter: 'E', id: 'E', check: false },
        { letter: 'F', id: 'F', check: false }
      ]
    }
  },
  methods: {
    checkAllChange() {
      this.letters.forEach(item => item.check = this.checkAll)
    },
    checkChange() {
      //   this.checkAll = this.letters.filter(item => item.check).length == this.letters.length   // 1. 使用 filter方法
      this.checkAll = this.letters.every(item => item.check)   // 2. 使用 every 方法
    }
  }
}

</script>
<style scoped>
table {
  border: 1px solid #ccc;
  width: 500px;
  text-align: center;
  line-height: 37px;
  border-collapse: collapse;
}
button {
  border-radius: 5px;
  border: 1px solid #ccc;
  padding: 2px 10px;
}
</style>

标签:checkAll,Vue,letters,反选,JS,item,letter,false,check
From: https://www.cnblogs.com/echoyya/p/16573830.html

相关文章

  • js创建二维数组
    js创建二维数组的方法:方法一:直接设置letarr=[];arr[0]=[1,2,3,4,5,6];arr[1]=[10,20,30,40,50,60]方法二: fill+一个for循环letarr=newArray(1......
  • springboot+Vue项目允许跨域
    packagecom.example.demo.itkb.user.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotat......
  • 在 Nodejs 中从终端获取用户输入的 4 种方法。
    在Nodejs中从终端获取用户输入的4种方法。当我们开始学习任何编程语言时,我们希望从终端获取用户输入。大多数人从c、c++、java等语言开始他们的编程之旅。在这些语......
  • JSON.parse()、JSON.stringify()、JSON.parse(JSON.stringify())
    本文已参与[新人创作礼]活动,一起开启掘金创作之路。JSON对象:JSON对象在大括号{}中书写,对象可包含多个key/value(键/值)对,key必须是字符串,value可以是合法的JSON数据类型(字......
  • 深入解析JSON.stringify和JSON.parse
    日常转化JSON的时候,我们都会用到JSON.stringify,但你真的了解JSON.stringify吗?关于JSON.stringify,我们最多的应用场景无非就是将它转化为JSON字符串,但其实使用过程中也会碰......
  • 用Vue框架实现 - 点击切换图片
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"con......
  • vue(1)
    序1.Vue是什么?Vue是一套用于构建用户界面的渐进式框架,响应式系统,自底向上逐层应用2.开始语法入门本来要下好多东西的,但是刚刚开始学所以跟老师走点击查看代码S......
  • 用Vue框架实现 - JSON数据渲染页面
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="referrer"content="no-referrer"/><metahttp-equiv="X-UA-Compatibl......
  • 快速入门VUE
    准备Vue.js环境Java语言的程序包:jar包JavaScript语言的程序包:外部js文件对于Java程序来说,框架=jar包+配置文件。对于Vue来说,导入Vue的外部js文件就能够使用Vue框架了......
  • 用Vue框架实现 - 移动端的tabbar
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conten......