vue2二次封装el-checkbox-group,v-model绑定的值用父组件传入
时间: 2024-09-12 19:15:27 浏览: 60
在Vue2中,如果你想对Element UI的`el-checkbox-group`组件进行二次封装并让其`v-model`的值来自父组件传递,你可以这样做:
首先,在父组件中定义一个数据属性,这个属性将是`el-checkbox-group`的值:
```html
<template>
<custom-checkbox-group v-model="selectedOptions" @change="handleCheckboxChange"></custom-checkbox-group>
</template>
<script>
export default {
data() {
return {
selectedOptions: [], // 这里就是你需要从父组件传递过来的值
};
},
methods: {
handleCheckboxChange(newOptions) {
this.selectedOptions = newOptions; // 当选择发生改变时更新父组件的数据
},
},
};
</script>
```
然后,在你的自定义组件`custom-checkbox-group`中接收这个值,并将其用于初始化`el-checkbox-group`:
```vue
<template>
<el-checkbox-group v-model="modelValue">
<!-- 根据实际需要添加checkbox选项 -->
<el-checkbox v-for="(item, index) in options" :key="index" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</template>
<script>
import { ElCheckboxGroup } from 'element-ui';
export default {
name: 'CustomCheckboxGroup',
props: ['options'], // 接收父组件传递的选择项列表
components: {
ElCheckboxGroup,
},
computed: {
modelValue() {
return this.$props.options.map(item => item.value); // 将选项转换为模型值格式
},
},
watch: {
$parent.selectedOptions: {
handler(newVal) {
this.modelValue = newVal; // 父组件的值变化时同步到子组件
},
deep: true,
},
},
};
</script>
```
这样,当父组件的`selectedOptions`值发生变化时,自定义的`custom-checkbox-group`会自动更新显示状态。
阅读全文