2行JS代码实现Vue全选和反选
实现效果:
第一行:子选项的选中状态 等于 全选框的状态
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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2020-09-01 Vue项目刷新页面 IE/360 浏览器 input输入框不清空问题处理
2020-09-01 Webpack入门