当前位置:首页 > VUE

vue 实现组单选

2026-02-17 03:18:38VUE

Vue 实现单选组件的核心方法

使用 v-model 绑定数据
在 Vue 中,通过 v-model 实现双向数据绑定。定义一个响应式数据(如 selectedOption)存储当前选中的值,绑定到单选组件的 value 属性。

vue 实现组单选

<template>
  <div>
    <input 
      type="radio" 
      v-model="selectedOption" 
      value="option1" 
      id="option1"
    >
    <label for="option1">选项1</label>

    <input 
      type="radio" 
      v-model="selectedOption" 
      value="option2" 
      id="option2"
    >
    <label for="option2">选项2</label>
  </div>
</template>

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

动态渲染选项列表
若选项数据来自后端或动态生成,可通过 v-for 遍历渲染,并绑定唯一标识(如 id)作为 value

vue 实现组单选

<template>
  <div>
    <div v-for="option in options" :key="option.id">
      <input 
        type="radio" 
        v-model="selectedOption" 
        :value="option.id"
        :id="`option-${option.id}`"
      >
      <label :for="`option-${option.id}`">{{ option.label }}</label>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: '',
      options: [
        { id: 1, label: '选项A' },
        { id: 2, label: '选项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"
        v-model="internalValue"
      >
      <label :for="item.value">{{ item.label }}</label>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    options: { type: Array, required: true },
    value: { type: [String, Number], default: '' }
  },
  computed: {
    internalValue: {
      get() { return this.value },
      set(val) { this.$emit('input', val) }
    }
  }
}
</script>

使用自定义组件
在父组件中引入并绑定数据,实现逻辑解耦。

<template>
  <RadioGroup 
    v-model="selected" 
    :options="radioOptions" 
  />
</template>

<script>
import RadioGroup from './RadioGroup.vue'

export default {
  components: { RadioGroup },
  data() {
    return {
      selected: 'a',
      radioOptions: [
        { value: 'a', label: 'Alpha' },
        { value: 'b', label: 'Beta' }
      ]
    }
  }
}
</script>

注意事项

  • 唯一标识:确保每个单选按钮的 idvalue 唯一,避免冲突。
  • 初始值:若需默认选中,初始化时设置 selectedOption 为对应选项的 value
  • 样式控制:可通过 CSS 或第三方 UI 库(如 Element UI、Ant Design Vue)美化单选组。

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

相关文章

vue实现评论

vue实现评论

Vue 实现评论功能的方法 基础评论组件结构 使用 Vue 单文件组件(SFC)构建评论功能的核心结构。模板部分包含评论输入框和评论列表,脚本部分处理数据绑定和逻辑。 <template&g…

vue路由实现内部切换

vue路由实现内部切换

Vue 路由实现内部切换的方法 Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)的页面切换。以下是几种常见的内部路由切换方式: 使用 <router-lin…

vue前端实现下载进度

vue前端实现下载进度

实现下载进度条的基本思路 在Vue中实现下载进度条,通常需要结合XMLHttpRequest或Fetch API来监听下载进度事件。通过计算已下载数据与总数据的比例,动态更新进度条的显示。 使用XM…

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式数…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.definePropert…