实现效果:

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

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>

2行JS代码实现Vue全选和反选的更多相关文章

  1. Vue.js实现checkbox的全选和反选

    小颖之前写的代码存在一个bug,就是当你选择全选的时候去掉后面的一个选项,再点全选结果就是反的了.很感谢博客园的朋友帮我改了这个问题嘻嘻,下面一起来看看具体是怎么实现的吧. 1.html <te ...

  2. vue.js 批量删除跟全选,反选效果

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  3. vue全选与反选以及通过使用如何filter删除数据

    在vue学习经常遇到的一些基本问题,下面是购物车里面的部分功能,分享给初学者,直接上源码: <!DOCTYPE html><html> <head> <met ...

  4. js中checkbox的全选和反选的实现

    <head> <meta charset="utf-8"/> <script type="text/javascript"> ...

  5. vue中的checkbox全选和反选

    前几天有个博客园的朋友问小颖,小颖之前写的vue2.0在table中实现全选和反选  .Vue.js实现checkbox的全选和反选,为什么他将里面的js复制下来,但是实现不了全选和反选.小颖当时看他 ...

  6. vue2.0实现在table中实现全选和反选

    其实在去年小颖已经写过一篇:Vue.js实现checkbox的全选和反选 小颖今天在跟着慕课网学习vue的过程中,顺便试试如何在table中实现全选和反选,页面的css样式是直接参考慕课网的样式写的, ...

  7. vue2.0在table中实现全选和反选

    其实在去年小颖已经写过一篇:Vue.js实现checkbox的全选和反选 小颖今天在跟着慕课网学习vue的过程中,顺便试试如何在table中实现全选和反选,页面的css样式是直接参考慕课网的样式写的, ...

  8. DOM操作案例之--全选与反选

    全选与反选在表单类的项目中还是很常见的,电商项目中的购物车一定少不了这个功能. 下面我只就用一个简单的案例做个演示吧. <div class="wrap"> <t ...

  9. 简单JS全选、反选代码

    1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org ...

  10. elementUI+JS实现全选与反选

    在实际项目开发过程中,遇到的需求,需要实现全选以及取消全选等功能,主要使用ElementUI + JS来实现,具体代码如下: <!DOCTYPE html> <html lang=& ...

随机推荐

  1. git cherry-pick合并其它分支的某次提交(commits)到当前分支

    git cherry-pick 可以选择某一个分支中的一个或几个commit(s)来进行操作. 例如,假设我们有个稳定版本的分支,叫v2.0.0,另外还有个开发版本的分支v3.0.0,我们不能直接把两 ...

  2. linux下YUM工具的使用:yum安装/升级/查看/搜索/卸载软件包

    目录 一.关于软件包 二.关于YUM 三.yum工具的使用 3.1 yum安装软件功能 3.2 yum升级软件包功能 3.3 yum查看,搜索功能 3.4 yum卸载功能 3.5 yum安装软件包组功 ...

  3. 基于 ESP8266_RTOS_SDK 实现声控灯

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdint.h&g ...

  4. tkinter小例子

    from tkinter import * def on_click(): label['text'] = text.get() root = Tk(className='hello') root.m ...

  5. jquery的class操作 css样式操作

        <button>切换</button>     <div class="div1">123</div>     <sc ...

  6. ABC346

    D 枚举是哪一位相同,情况为 \(00\) 还是 \(11\),然后用前缀和和后缀和求一下即可. \(pre_{j,i}\) 表示第一位为 \(j\),前 \(i\) 位的每两个相同的字符均不相同的情 ...

  7. C#.NET 读取PFX私钥证书并导出PEM格式私钥

    项目nuget引用 BouncyCastle. 读取证书 X509Certificate2 x509 = new X509Certificate2(lblPfxPath.Text, txtPfxPwd ...

  8. vm ware cent os 共享文件夹

    1.VM中安装vm-tools 2.在VM 虚拟机设置中添加共享文件夹. 3.重启虚拟机 4.在/mnt/ 里新建一个名为"win"的文件夹 5.在cent os 中执行: vmw ...

  9. idea中vue的启动方式

    1.选取 2.添加 3.配置 4.启动 启动前先 在终端  执行   npm  install  命令  再启动

  10. Windows 下自动预约申购 i茅台

    今天分享一个自动预约抢茅子的工具! 前期准备工作: 1.需安装:.Net6 依赖 (根据操作系统选择 x64 或 x86 版本进行下载.) 安装软件 1.软件下来下来之后,解压并进入软件目录,我们双击 ...