实现单选功能。通过v-model绑定数据,确保同一组单选按钮的name属性相同。…">
当前位置:首页 > VUE

vue怎么实现单选

2026-02-11 09:46:49VUE

使用原生HTML单选按钮

在Vue中可以直接使用HTML的<input type="radio">实现单选功能。通过v-model绑定数据,确保同一组单选按钮的name属性相同。

vue怎么实现单选

<template>
  <div>
    <input type="radio" id="option1" value="Option1" v-model="selectedOption" name="group">
    <label for="option1">Option 1</label>
    <input type="radio" id="option2" value="Option2" v-model="selectedOption" name="group">
    <label for="option2">Option 2</label>
    <p>Selected: {{ selectedOption }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: ''
    }
  }
}
</script>

使用Vue组件库(如Element UI)

若使用UI库(如Element UI),可直接调用其封装好的单选组件,例如el-radio

vue怎么实现单选

<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: {{ 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="dynamicGroup"
      >
      <label :for="option.value">{{ option.label }}</label>
    </div>
    <p>Selected: {{ selectedOption }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'A', label: 'Option A' },
        { value: 'B', label: 'Option B' }
      ]
    }
  }
}
</script>

自定义单选组件

封装可复用的单选组件,通过props接收选项列表,emit事件传递选中值。

<!-- RadioGroup.vue -->
<template>
  <div>
    <div v-for="item in options" :key="item.value">
      <input 
        type="radio" 
        :id="item.value" 
        :value="item.value" 
        :checked="item.value === modelValue"
        @change="$emit('update:modelValue', item.value)"
        name="customGroup"
      >
      <label :for="item.value">{{ item.label }}</label>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    options: Array,
    modelValue: String
  },
  emits: ['update:modelValue']
}
</script>

<!-- 父组件中使用 -->
<template>
  <RadioGroup 
    v-model="selectedOption" 
    :options="[
      { value: 'X', label: 'Choice X' },
      { value: 'Y', label: 'Choice Y' }
    ]" 
  />
  <p>Selected: {{ selectedOption }}</p>
</template>

关键注意事项

  • v-model绑定:确保单选按钮组绑定同一个响应式数据。
  • name属性:同一组的单选按钮需设置相同的name以避免多选冲突。
  • 无障碍支持:通过<label>关联id提升可访问性。

标签: 单选vue
分享给朋友:

相关文章

vue里实现增删改查

vue里实现增删改查

在Vue中实现增删改查 数据初始化 在Vue组件的data中定义初始数据和表单绑定的变量: data() { return { items: [ { id: 1, name…

vue实现引导

vue实现引导

Vue 实现引导功能的方法 使用第三方库 推荐使用 driver.js 或 intro.js 这类专门为 Vue 设计的引导库。这些库提供了完整的 API 和样式,能够快速实现引导功能。 安装 dr…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

vue实现分栏

vue实现分栏

Vue实现分栏的常见方法 使用CSS Flexbox布局 通过Flexbox可以快速实现分栏效果,适合大多数响应式布局场景 <template> <div class="con…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…