在Vue中执行CheckBox的全选反选有很多方法
我觉得最易懂,速度最快的方法就是这个!
首先就是自己创建一个input,正在mx.txt的前方添加一个input:CheckBox。在v-model加上你每次创建出来的mx.check
最重点就在于forEach遍历,出来的都是当前的。
有些人不注意的一点,为什么data里面没有check:[]这样的出现。
data里的是实时监控,你点一次自动将所有的check都变成了true。
this.list = this.list.filter(e => {
return !e.check
})
这句话的意思:当你打钩的那几个。
当前的数据赋一个值, 这个值就是过滤所有的list里面想干掉的人
因为默认是false,但是被你选中的则是true。
但他让你返回!e.check 则是false
也就是说:我要的是没有中的
<template>
<div class="check">
<button @click="checkAll">全选</button>
<button @click="remAll">全部删除</button>
<button @click="rem">选中删除</button>
<br>
<input type="text" v-model="txt" @keyup.enter="ck" />
<ul>
<li v-for="(mx, index) in list" :key="index">
<input type="checkbox" v-model="mx.check" /> {{mx.txt}}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
txt: "",
list: [],
}
},
methods: {
ck() {
this.list.push({
txt: this.txt,
check: false
})
this.txt = ""
},
remAll()
{
this.list = []
},
checkAll()
{
this.list.forEach((mx) => {
mx.check = !mx.check
})
},
rem() {
this.list = this.list.filter(e => {
return !e.check
})
}
}
}
</script>
<style lang="less">
.check {
cursor: pointer;
button {
cursor: pointer;
border: 0;
padding: 10px 30px;
background: #000;
color: #fff;
border-radius: 100px;
margin-bottom: 10px;
outline: none;
}
input {
padding: 15px;
width: 300px;
border: 0;
box-shadow: 0 0 15px #ccc;
}
ul {
width: 300px;
padding: 0;
cursor: pointer;
box-shadow: 0 0 15px #ccc;
min-height: 300px;
padding: 15px;
list-style: none;
li {
cursor: pointer;
margin-bottom: 12px;
>input {
padding: 0;
width: auto;
}
}
}
}
</style>
如果想解决提示数量
那就用reduce(fn , 0)
这个reduce用途是给你2个值, 第一个0, 第二个就看你给我多少。然后从0开始
给我一个计算属性,当前开始过滤返回的list的check,b.check上来就false,所以我给你1块
如果你拿走,放到了另一个b, 那我就从a里面来回取
computed:{
a()
{
return this.list.reduce((a,b)=> a+(b.check?0:1) , 0)
},
b()
{
return this.list.reduce((a,b)=> a+(b.check?1:0) , 0)
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。