vue怎么实现单选
Vue 实现单选的方法
在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法:
使用 v-model 绑定单选按钮组
通过 v-model 绑定一个变量到单选按钮组,确保同一组单选按钮的 name 属性相同,从而实现单选效果。

<template>
<div>
<input type="radio" id="option1" value="option1" v-model="selectedOption" name="options">
<label for="option1">选项 1</label>
<input type="radio" id="option2" value="option2" v-model="selectedOption" name="options">
<label for="option2">选项 2</label>
<input type="radio" id="option3" value="option3" v-model="selectedOption" name="options">
<label for="option3">选项 3</label>
<p>选中的选项是: {{ selectedOption }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedOption: ''
};
}
};
</script>
使用 Vue 组件库的单选组件
如果项目中使用 UI 组件库(如 Element UI、Vuetify 或 Ant Design Vue),可以直接使用其提供的单选组件。
以 Element UI 为例:

<template>
<div>
<el-radio-group v-model="selectedOption">
<el-radio label="option1">选项 1</el-radio>
<el-radio label="option2">选项 2</el-radio>
<el-radio label="option3">选项 3</el-radio>
</el-radio-group>
<p>选中的选项是: {{ selectedOption }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedOption: ''
};
}
};
</script>
动态生成单选按钮
通过 v-for 动态生成单选按钮,适用于选项数据来自后端或动态变化的场景。
<template>
<div>
<div v-for="option in options" :key="option.value">
<input
type="radio"
:id="option.value"
:value="option.value"
v-model="selectedOption"
name="dynamicOptions"
>
<label :for="option.value">{{ option.label }}</label>
</div>
<p>选中的选项是: {{ selectedOption }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedOption: '',
options: [
{ value: 'option1', label: '选项 1' },
{ value: 'option2', label: '选项 2' },
{ value: 'option3', label: '选项 3' }
]
};
}
};
</script>
自定义单选逻辑
如果需要更复杂的逻辑(如禁用某些选项或自定义样式),可以通过计算属性或方法实现。
<template>
<div>
<div
v-for="option in options"
:key="option.value"
@click="selectOption(option.value)"
:class="{ 'active': selectedOption === option.value }"
>
{{ option.label }}
</div>
<p>选中的选项是: {{ selectedOption }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedOption: '',
options: [
{ value: 'option1', label: '选项 1' },
{ value: 'option2', label: '选项 2' },
{ value: 'option3', label: '选项 3' }
]
};
},
methods: {
selectOption(value) {
this.selectedOption = value;
}
}
};
</script>
<style>
.active {
background-color: #42b983;
color: white;
}
</style>
注意事项
- 确保同一组的单选按钮绑定相同的
v-model变量。 - 动态生成选项时,为每个选项设置唯一的
key。 - 使用组件库时,注意查阅文档以支持更多功能(如禁用、自定义样式等)。






