当前位置:首页 > VUE

vue 实现单选

2026-03-07 04:34:09VUE

Vue 实现单选的方法

在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法:

使用 v-model 绑定单选按钮

通过 v-model 绑定一个变量到单选按钮组,确保同一组单选按钮的 name 属性相同。选中时,v-model 绑定的变量会更新为当前选中项的 value

vue 实现单选

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

    <input type="radio" id="option2" value="option2" v-model="selectedOption" name="options" />
    <label for="option2">Option 2</label>

    <input type="radio" id="option3" value="option3" v-model="selectedOption" name="options" />
    <label for="option3">Option 3</label>

    <p>Selected option: {{ selectedOption }}</p>
  </div>
</template>

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

使用动态生成的单选按钮

如果需要动态生成单选按钮,可以通过 v-for 遍历选项列表,并为每个选项绑定 value

vue 实现单选

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

<script>
export default {
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'opt1', label: 'Dynamic Option 1' },
        { value: 'opt2', label: 'Dynamic Option 2' },
        { value: 'opt3', label: 'Dynamic Option 3' }
      ]
    };
  }
};
</script>

使用自定义组件实现单选

可以封装一个自定义的单选组件,通过 v-model 实现父子组件间的双向绑定。

<!-- ParentComponent.vue -->
<template>
  <div>
    <RadioGroup v-model="selectedOption" :options="options" />
    <p>Selected option: {{ selectedOption }}</p>
  </div>
</template>

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

export default {
  components: { RadioGroup },
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'custom1', label: 'Custom Option 1' },
        { value: 'custom2', label: 'Custom Option 2' }
      ]
    };
  }
};
</script>

<!-- RadioGroup.vue -->
<template>
  <div>
    <div v-for="option in options" :key="option.value">
      <input 
        type="radio" 
        :id="option.value" 
        :value="option.value" 
        v-model="internalValue" 
        name="customOptions" 
      />
      <label :for="option.value">{{ option.label }}</label>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    value: String,
    options: Array
  },
  computed: {
    internalValue: {
      get() {
        return this.value;
      },
      set(newValue) {
        this.$emit('input', newValue);
      }
    }
  }
};
</script>

使用第三方库

如果需要更复杂的单选功能(如样式定制或分组管理),可以使用第三方库如 element-uivant

<template>
  <div>
    <el-radio-group v-model="selectedOption">
      <el-radio label="lib1">Library Option 1</el-radio>
      <el-radio label="lib2">Library Option 2</el-radio>
    </el-radio-group>
    <p>Selected option: {{ selectedOption }}</p>
  </div>
</template>

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

注意事项

  1. 同一组的单选按钮需要设置相同的 name 属性,以确保互斥选择。
  2. 动态生成选项时,确保每个选项的 value 唯一。
  3. 自定义组件中需通过 v-model$emit 实现双向绑定。

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

相关文章

vue播放倍速怎么实现

vue播放倍速怎么实现

实现Vue播放倍速的方法 在Vue中实现播放倍速功能通常涉及HTML5的<video>元素或第三方播放器库。以下是几种常见实现方式: 使用原生HTML5 video元素 通过ref获取v…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <tem…

vue实现openoffice

vue实现openoffice

Vue 中集成 OpenOffice 的实现方法 在 Vue 项目中集成 OpenOffice 通常需要通过后端服务或现有库实现文档的预览和编辑功能。以下是几种常见的实现方式: 使用 OnlyOff…

vue实现spa

vue实现spa

Vue 实现 SPA(单页应用)的步骤 创建 Vue 项目 使用 Vue CLI 快速初始化一个 Vue 项目,确保安装了 Vue Router 作为路由管理工具。运行以下命令创建项目: vue c…

vue实现轮播文字

vue实现轮播文字

Vue实现轮播文字的方法 使用Vue的transition组件 在Vue中可以通过transition组件结合CSS动画实现文字轮播效果。定义一个数组存储需要轮播的文字内容,通过定时器切换当前显示的索…

vue嵌套grafana实现

vue嵌套grafana实现

Vue 中嵌套 Grafana 的实现方法 使用 iframe 嵌入 Grafana 面板 在 Vue 项目中可以通过 iframe 直接嵌入 Grafana 的面板或仪表板。确保 Grafana 已…