当前位置:首页 > 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实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标签…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容器组…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来定义…

vue动画实现

vue动画实现

Vue动画实现方法 Vue提供了多种方式实现动画效果,主要通过内置组件和第三方库完成。 使用<transition>组件 Vue内置的<transition>组件可以为元素添…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue 实现上传

vue 实现上传

Vue 实现文件上传 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-upload-component)完…