el-radio-group嵌套el-checkbox如何對多選的數據進行數據綁定
时间: 2024-09-19 20:05:46 浏览: 40
在Element UI中,如果你想在`el-radio-group`(单选组)内部嵌套`el-checkbox`(复选框),并且对多选数据进行数据绑定,可以使用Vue的计算属性以及数组方法来实现。假设你有一个层级结构的数据,比如:
```javascript
data() {
return {
options: [
{
id: 'parent1',
label: 'Parent 1',
children: [
{ id: 'child1', name: 'Child 1' },
{ id: 'child2', name: 'Child 2' }
]
},
{
id: 'parent2',
label: 'Parent 2',
children: [
{ id: 'child3', name: 'Child 3' },
{ id: 'child4', name: 'Child 4' }
]
}
]
};
}
```
你可以这样做:
1. 创建一个计算属性,用来筛选出当前`radioGroup`选中的父级对象及其所有子级对象:
```javascript
computed: {
selectedParentsAndChildren() {
const selectedRadioId = this.$refs['your-radio-group'].value;
return this.options.find(option => option.id === selectedRadioId) ?
[option, ...option.children] :
[];
}
},
```
这里假设`el-radio-group`的值由`ref` `your-radio-group`获取。
2. 在`el-checkbox`上绑定`v-model`到`selectedParentsAndChildren`,这样每当你切换单选时,计算属性会自动更新并反映到复选框的选择上:
```html
<el-radio-group ref="your-radio-group" v-model="selectedRadioId">
<!-- ... 省略其他 radio 标签 ... -->
</el-radio-group>
<template v-for="(item, index) in selectedParentsAndChildren" :key="index">
<el-checkbox v-model="item.selected"> {{ item.name }} </el-checkbox>
</template>
```
现在,当你在单选框中切换选择,相应的子节点的复选框状态也会同步。
阅读全文