<template>
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
<div style="margin: 15px 0;"></div>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox v-for="city in cities" :label="city" :key="city">{{city}}</el-checkbox>
</el-checkbox-group>
</template>
<script>
const cityOptions = ['上海', '北京', '广州', '深圳'];
export default {
data() {
return {
checkAll: false,
checkedCities: ['上海', '北京'],
cities: cityOptions,
isIndeterminate: true
};
},
methods: {
handleCheckAllChange(val) {
this.checkedCities = val ? cityOptions : [];
this.isIndeterminate = false;
},
handleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.cities.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
}
}
};
</script>
问题就是两个事件的接收的参数问题。
v-model绑定了,不是抛出$event.target.checked吗?
不是监听子组件吗?子组件是checkbox应该抛出的是bool值啊
为什么第二个抛出的数组?
你说的
$event.target.checked
这种一看就是原生组件<input type="checkbox">
el-checkbox
和el-checkbox-group
这种组件是开发者自己写的。v-model
可以拆解成:value
和@input
,那么问题就很简单了。你组件中$emit('input')
提交的是什么,外面接收到的就是什么https://segmentfault.com/a/1190000022651551#item-1-6 v-model & 原生DOM input、textarea、select & 自定义组件 component