<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../../vue.js"></script>
<style>
* {margin: 0;padding: 0;}
.main{margin: 50px;}
li{list-style: none;}
ul li{padding-left: 20px;}
</style>
</head>
<body>
<div class="main" id="app">
<div>
<input type="checkbox" v-model="allCheck" @change="changeAll()" />水果
</div>
<ul>
<li v-for="(item,index) in list"><input type="checkbox" v-model="item.check" @change="singleCheck" key="index">{{item.name}}</li>
</ul>
</div>
<script>
window.onload = function(){
new Vue({
el: '#app',
data: {
allCheck: false,
list:[
{name: '苹果',check: false},
{name: '香蕉',check: false},
{name: '荔枝',check: true},
{name: '西瓜',check: false},
{name: '李子',check: false}
],
checkNames: []
},
methods: {
singleCheck(){
// this.checkNames = [];
// this.list.forEach((item)=>{
// if(item.check == true){
// this.checkNames.push(item);
// }
// })
// console.log(this.checkNames)
// if(this.list.length==this.checkNames.length){
// this.allCheck = true;
// }else{
// this.allCheck = false;
// }
//filter()是对数组中每一项运行给定函数,返回符合条件的项数组
var count = this.list.filter(function(item){
return item.check==true;
})
// console.log(count)
this.allCheck = this.list.length == count.length ? true : false;
//every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。
// this.allCheck = this.list.every(function(item){
// return item.check
// })
//some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。
// this.allCheck = this.list.some(function(item){
// return item.check
// })
},
changeAll(){
// for(var i=0;i<this.list.length;i++){
// this.list[i].check=this.allCheck;
// }
this.list.forEach((item)=>{
item.check = this.allCheck
})
}
}
})
}
</script>
</body>
</html>