案例-反选
目标: 反选功能
- 需求: 点击反选, 让所有小选框, 各自取相反勾选状态
分析:
①: 小选框的勾选状态, 在对象的c属性
②: 遍历所有对象, 把对象的c属性取相反值赋予回去即可
图示:
methods:{
btn(){
// 遍历所有对象,吧对象的c属性取相反值赋予回去即可
this.arr.forEach(item=>item.c = !item.c)
}
}
<template>
<div>
<span>全选:</span>
<input type="checkbox" v-model="isAll"/>
<button @click="btn">反选</button>
<ul>
<li v-for="item in arr" :key="item.name">
<input type="checkbox" v-model="item.c"/>
<span>{{item.name}}</span>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
arr: [
{
name: "猪八戒",
c: false,
},
{
name: "孙悟空",
c: false,
},
{
name: "唐僧",
c: false,
},
{
name: "白龙马",
c: false,
},
],
};
},
computed: {
// isAll(){
// // every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试
// // 他返回一个布尔值
// // 每一个都能通过测试函数,返回true
// // 碰到没通过测试函数的,就返回false,并停止
// return this.arr.every(item =>item.c === true )
// }
isAll:{
// isAll 值更新时
set(val){
// console.log('你修改了isAll的值',vall);
this.arr.forEach(item =>item.c = val)
},
// isAll 值的获取
get(){
return this.arr.every(item =>item.c === true )
}
}
},
methods:{
btn(){
// 遍历所有对象,吧对象的c属性取相反值赋予回去即可
this.arr.forEach(item=>item.c = !item.c)
}
}
};
</script>