通过 v-model 绑定数据实现单选功能,适合基础场景:
当前位置:首页 > VUE

vue radio实现单选

2026-01-19 02:27:32VUE

实现 Vue 单选按钮(Radio)的方法

使用原生 <input type="radio">

通过 v-model 绑定数据实现单选功能,适合基础场景:

<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>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: '' // 默认选中的值
    }
  }
}
</script>

使用 Element UI 的 Radio 组件

适用于使用 Element UI 框架的项目:

<template>
  <div>
    <el-radio v-model="radioValue" label="1">Option A</el-radio>
    <el-radio v-model="radioValue" label="2">Option B</el-radio>
  </div>
</template>

<script>
export default {
  data() {
    return {
      radioValue: '1' // 默认选中值需与 label 匹配
    }
  }
}
</script>

动态生成 Radio 选项

通过 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>
  </div>
</template>

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

自定义 Radio 组件

创建可复用的自定义单选组件:

<!-- CustomRadio.vue -->
<template>
  <div class="custom-radio" @click="selectOption">
    <div :class="{ 'active': isSelected }"></div>
    <span>{{ label }}</span>
  </div>
</template>

<script>
export default {
  props: {
    label: String,
    value: String,
    selectedValue: String
  },
  computed: {
    isSelected() {
      return this.value === this.selectedValue
    }
  },
  methods: {
    selectOption() {
      this.$emit('input', this.value)
    }
  }
}
</script>

<style scoped>
.custom-radio { display: flex; align-items: center; cursor: pointer; }
.active { background-color: #409EFF; }
</style>

使用 Vuex 管理状态

当需要全局状态管理时:

// store.js
export default new Vuex.Store({
  state: {
    radioSelection: null
  },
  mutations: {
    setRadioSelection(state, payload) {
      state.radioSelection = payload
    }
  }
})
<template>
  <input 
    type="radio" 
    v-model="$store.state.radioSelection" 
    value="storeOption"
  >
</template>

表单验证集成

结合 vee-validate 进行表单验证:

vue radio实现单选

<template>
  <ValidationProvider rules="required" v-slot="{ errors }">
    <input type="radio" v-model="choice" value="accept">
    <span>{{ errors[0] }}</span>
  </ValidationProvider>
</template>

注意事项

  • 单选按钮组必须共享同一个 v-model 绑定
  • 动态生成的选项需确保 value 唯一性
  • 组件库的 Radio 通常提供更丰富的样式和功能(如禁用状态)
  • 移动端建议增加点击区域大小

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

相关文章

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vue…

vue实现效果

vue实现效果

以下是Vue实现常见效果的几种典型方法,分为不同场景说明: 数据绑定与响应式更新 使用v-model实现表单双向绑定: <template> <input v-model="…

vue实现oauth

vue实现oauth

Vue 实现 OAuth 的步骤 安装必要的依赖 确保项目中安装了 axios 和 vue-router。OAuth 通常需要发送 HTTP 请求和处理路由跳转。 npm install axios…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue 实现后退

vue 实现后退

实现后退功能的方法 在Vue中实现后退功能通常需要结合浏览器历史记录API或Vue Router的导航方法。以下是几种常见的实现方式: 使用Vue Router的go方法 this.$router…