<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>checkbox</title>
</head>
<style>
.label {
padding: 5px 10px;
border: 1px solid rgb(104, 67, 67);
border-radius: 5px;
cursor: pointer;
}
[v-cloak]{
display:none !important; //防止刷新页面看见源码
}
</style>
<body>
<div id="app" v-cloak>
<label class="label">
<input type="checkbox" v-model='isCheckAll' @click="checkAll" />
全选
</label>
<div v-for="(item,index) in tempData">
<label style="cursor: pointer;">
<input type="checkbox" :value="item" v-model="saveInfo" @change="singleCheck">
{{item.country}}
</label>
</div>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el: "#app",
data() {
return {
isCheckAll: false,
saveInfo: [],//保存选择的数据,用于上传后台
tempData: [
{ id: 0, country: '中国' },
{ id: 1, country: '美国' },
{ id: 2, country: '俄罗斯' },
{ id: 3, country: '英国' },
{ id: 4, country: '法国' }
],
}
},
methods: {
singleCheck() {
if (this.saveInfo.length === this.tempData.length) {
this.isCheckAll = true;
} else {
this.isCheckAll = false;
}
console.log(this.saveInfo)
},
checkAll() {
let that = this;
this.tempData.forEach(item => {
if (!that.isCheckAll) {
that.saveInfo.push(item)
} else
that.saveInfo = [];
}
});
console.log(this.saveInfo)
},
}
})
</script>
</html>