vue实现单选框
Vue 实现单选框的方法
在 Vue 中实现单选框可以通过多种方式完成,以下是常见的几种方法:
使用 v-model 绑定数据
通过 v-model 绑定到同一个变量,确保单选框的互斥性。每个单选框的 value 属性对应不同的值。

<template>
<div>
<input type="radio" id="option1" value="option1" v-model="selectedOption" />
<label for="option1">Option 1</label>
<input type="radio" id="option2" value="option2" v-model="selectedOption" />
<label for="option2">Option 2</label>
<p>Selected option: {{ 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"
/>
<label :for="option.value">{{ option.label }}</label>
</div>
<p>Selected option: {{ selectedOption }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedOption: '',
options: [
{ value: 'option1', label: 'Option 1' },
{ value: 'option2', label: 'Option 2' },
{ value: 'option3', label: 'Option 3' }
]
}
}
}
</script>
使用组件封装单选框
将单选框封装为可复用的组件,便于统一管理和样式控制。
<template>
<div>
<RadioButton
v-for="option in options"
:key="option.value"
:value="option.value"
:label="option.label"
v-model="selectedOption"
/>
<p>Selected option: {{ selectedOption }}</p>
</div>
</template>
<script>
import RadioButton from './RadioButton.vue'
export default {
components: { RadioButton },
data() {
return {
selectedOption: '',
options: [
{ value: 'option1', label: 'Option 1' },
{ value: 'option2', label: 'Option 2' }
]
}
}
}
</script>
单选框组件示例(RadioButton.vue)
<template>
<div>
<input
type="radio"
:id="value"
:value="value"
v-model="modelValue"
/>
<label :for="value">{{ label }}</label>
</div>
</template>
<script>
export default {
props: {
value: {
type: String,
required: true
},
label: {
type: String,
required: true
},
modelValue: {
type: String,
required: true
}
},
emits: ['update:modelValue'],
computed: {
checked: {
get() {
return this.modelValue === this.value
},
set(checked) {
this.$emit('update:modelValue', checked ? this.value : '')
}
}
}
}
</script>
使用第三方库(如 Element UI)
如果需要更丰富的样式和功能,可以使用第三方 UI 库如 Element UI 的单选框组件。
<template>
<div>
<el-radio v-model="selectedOption" label="option1">Option 1</el-radio>
<el-radio v-model="selectedOption" label="option2">Option 2</el-radio>
<p>Selected option: {{ selectedOption }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedOption: ''
}
}
}
</script>
注意事项
- 确保单选框的
value属性唯一,避免冲突。 - 使用
v-model时,绑定的变量初始值应与某个单选框的value匹配,否则默认无选中状态。 - 动态生成的单选框需注意
key的唯一性。






