使用v-model实现多选框全选效果,其中属性数据通过watch选项进行监控。
时间: 2024-09-24 10:01:48 浏览: 48
在Vue.js中,可以使用`v-model`配合数组和`v-bind:key`以及`watch`来实现多选框的全选效果。首先,你需要创建一个多选框数组,并绑定到`v-model`上:
```html
<template>
<div>
<ul>
<li v-for="(item, index) in options" :key="index">
<input type="checkbox" :value="item.value" v-model="selectedItems" />
{{ item.label }}
</li>
</ul>
<p>已选择: {{ selectedItems }}</p>
</div>
</template>
<script>
export default {
data() {
return {
options: [
{ value: 'option1', label: 'Option 1' },
{ value: 'option2', label: 'Option 2' },
// ... 更多选项
],
selectedItems: [], // 初始为空,用于存储选中的值
};
},
watch: {
// 观察 selectedItems 的变化,当它变为全选状态时执行全选操作
selectedItems(newVal, oldVal) {
if (newVal.every(item => newVal.includes(item))) {
this.selectedItems = this.options.map(option => option.value); // 全部设为选中状态
} else {
this.selectedItems = []; // 如果不是全选,则清空
}
},
},
};
</script>
```
在这个例子中,当你勾选所有多选框时,`selectedItems`将包含所有的选项值;反之,如果取消勾选,它会变成空数组。`watch`监听器会在每次`selectedItems`改变时执行,判断是否全选,然后做出相应的调整。
阅读全文