代码<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue.JS-表单-监听属性-全选与取消全选</title>
<!--加载本地vue.js的框架-->
<script src="vue2.2.2.min.js"></script>
</head>
<body>
<!--定义div区块的id的值,这里定义的值为"app",后面vue会使用该值-->
<div id="app">
<!--全选,调用方法ckall()来实现全选-->
<input type="checkbox" v-model="checked" id="ckbox" v-on:change="ckall()" />
<label for="ckbox">全选</label><hr>
<!--选项1,双向绑定到属性(数组)jieguo,有自己的id和value-->
<input type="checkbox" id="baidu" value="baidu" v-model="jieguo" />
<label for="baidu">baidu</label>
<!--选项2,双向绑定到属性(数组)jieguo,有自己的id和value-->
<input type="checkbox" id="taobao" value="taobao" v-model="jieguo" />
<label for="taobao">taobao</label>
<!--选项3,双向绑定到属性(数组)jieguo,有自己的id和value-->
<input type="checkbox" id="qq" value="qq" v-model="jieguo" />
<label for="qq">qq</label>
<!--上面三个独立的选项,如果都选择了;也会自动给全选这里选中-->
<hr>
{{jieguo}}<!--选中的内容-->
</div>
<script>
//Vue语句-开始
var vm = new Vue({
el: '#app', //app为前面div区块的id的值,通过"#"号绑定
data: {
checked:false,//初始化布尔型
jieguo:[],//初始化、定义空数组
shuzu:["baidu","taobao","qq"] //定义所有内容的结果值(数组)
},
//自定义方法区块
methods:{
//自定义全选方法
ckall:function(){
//全选选中状态
if(this.checked){
this.jieguo = this.shuzu //通过给数组jieguo赋值实现全选
}else{//取消全选
this.jieguo =[] //通过给数组jieguo赋值为空数组、实现取消全选
}
}
},
//监听 数组jieguo的内容;如果发生改变,判断是否全选
watch:{
"jieguo":function(){
if(this.jieguo.length == this.shuzu.length){
//当前选中的内容长度(几个选项)和所有结果的长度一致,则表示全选
this.checked = true//设置全选状态true
}else{
this.checked = false//不是全选则设置全选状态false
}
}
}
})//Vue语句-结束
</script>
</body>
</html> 效果图小白教程网www.2d5.net
|