<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<script src="../vue.js"></script>
<div id="app">
全选:<input type="checkbox" v-model="allbtn"><hr>
<div v-for="item in users" :key="item.id">
<input type="checkbox" v-model="item.isselect"><span>{{item.name}}</span>
</div>
</div>
<script>
// 全选操作的持久化 持久化:也就是再重新打开一个页面时:页面的内容不变
// 需要借助服务器
const users=[
{id:1,name:"jack",isselect:false},
{id:2,name:"Jhon",isselect:true},
{id:3,name:"lucy",isselect:false},
{id:4,name:"tom",isselect:false}
]
var vm = new Vue({
el:"#app",
data:{
users:JSON.parse(window.localStorage.getItem('users'))||users,
},
// 使用计算属性
computed:{
allbtn:{
get(){
return this.users.every(item=>item.isselect)
},
set(val){
this.users.forEach(item=>item.isselect=val)
}
}
},
watch:{
users:{
handler(newval){
window.localStorage.setItem('users',JSON.stringify(newval))
},
deep:true
// 开启深度监听
}
}
})
</script>
</body>
</html>
在这个案例里面,我们主要运用了watch监听器和computed计算属性