<template> <el-checkbox-group v-model="checkList"> <el-checkbox label="复选框 A"></el-checkbox> <el-checkbox label="复选框 B"></el-checkbox> <el-checkbox label="复选框 C"></el-checkbox> <el-checkbox label="禁用" disabled></el-checkbox> <el-checkbox label="选中且禁用" disabled></el-checkbox> </el-checkbox-group> </template> <script> export default { data () { return { checkList: ['选中且禁用','复选框 A'] }; } }; </script>
上面是官网的例子,用起来没什么问题
实际使用的时候,常常会在表单中绑定,例如v-model绑定为form.checkList
当绑定的不是一个纯粹的变量上,在一个对象上时,就会发现怎么样都不生效。
并且@change监听事件的时候,发现能正常获取到选中的值,但是就是不显示选中状态。
官网的深入响应式原理已经说明了这类问题的原因,如果要绑定到 form.checkList,需要按照如下方式响应属性添加到嵌套的对象:
this.$set(this.form, 'checkList', [])
此方案同样适用于动态生成的checkBox等