vue,生成包含4个选项的列表,其中两个为单选,两个为多选,选择单选时,多选框清空选择状态,选择多选时清空单选选择状态,根据选项中的id默认选中第一个选项;并且输出被选中的选项
时间: 2024-05-07 12:15:11 浏览: 94
以下是一个实现以上需求的 Vue 组件:
```html
<template>
<div>
<div>
<h3>单选:</h3>
<label v-for="option in radioOptions" :key="option.id">
<input type="radio" :value="option" v-model="selectedRadioOption">
{{ option.label }}
</label>
</div>
<div>
<h3>多选:</h3>
<label v-for="option in checkboxOptions" :key="option.id">
<input type="checkbox" :value="option" v-model="selectedCheckboxOptions">
{{ option.label }}
</label>
</div>
<div>
<h3>被选中的选项:</h3>
<ul>
<li v-for="option in selectedOptions" :key="option.id">{{ option.label }}</li>
</ul>
</div>
</div>
</template>
<script>
export default {
data() {
return {
radioOptions: [
{ id: 1, label: '选项1' },
{ id: 2, label: '选项2' },
{ id: 3, label: '选项3' },
],
checkboxOptions: [
{ id: 4, label: '选项4' },
{ id: 5, label: '选项5' },
{ id: 6, label: '选项6' },
],
selectedRadioOption: null,
selectedCheckboxOptions: [],
};
},
computed: {
selectedOptions() {
return [...(this.selectedRadioOption ? [this.selectedRadioOption] : []), ...this.selectedCheckboxOptions];
},
},
watch: {
selectedRadioOption() {
this.selectedCheckboxOptions = [];
},
selectedCheckboxOptions() {
this.selectedRadioOption = null;
},
},
mounted() {
this.selectedRadioOption = this.radioOptions[0];
},
};
</script>
```
该组件中,`radioOptions` 和 `checkboxOptions` 分别代表单选和多选的选项,`selectedRadioOption` 和 `selectedCheckboxOptions` 分别代表单选和多选的选中状态。`selectedOptions` 计算属性根据当前选中的单选和多选选项组合成一个数组。
在组件的 `watch` 中,对于单选选项的变化,清空多选选项的选择状态;对于多选选项的变化,清空单选选项的选择状态。在组件的 `mounted` 中,默认选中单选选项中的第一个选项。
在组件的模板中,使用 `v-for` 渲染单选和多选选项,使用 `v-model` 绑定单选和多选的选中状态。同时,使用 `computed` 渲染被选中的选项列表。
阅读全文