当前位置:首页 > VUE

vue单选实现

2026-01-13 01:19:00VUE

Vue 单选实现方法

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

使用 v-model 绑定单选按钮

通过 v-model 绑定到同一个变量,实现单选效果:

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

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

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

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

使用组件实现单选组

可以封装一个单选组组件,提高复用性:

<template>
  <div>
    <RadioGroup v-model="selectedOption" :options="options" />
  </div>
</template>

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

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

RadioGroup.vue 组件实现:

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

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

使用第三方 UI 库

许多 UI 库如 Element UI、Vuetify 等提供了现成的单选组件:

Element UI 示例:

<template>
  <el-radio-group v-model="radio">
    <el-radio :label="1">Option 1</el-radio>
    <el-radio :label="2">Option 2</el-radio>
    <el-radio :label="3">Option 3</el-radio>
  </el-radio-group>
</template>

<script>
export default {
  data() {
    return {
      radio: 1
    }
  }
}
</script>

Vuetify 示例:

<template>
  <v-radio-group v-model="radio">
    <v-radio label="Option 1" value="1"></v-radio>
    <v-radio label="Option 2" value="2"></v-radio>
    <v-radio label="Option 3" value="3"></v-radio>
  </v-radio-group>
</template>

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

动态生成单选按钮

当选项需要从 API 获取或动态生成时:

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

<script>
export default {
  data() {
    return {
      selectedDynamicOption: '',
      dynamicOptions: []
    }
  },
  async created() {
    this.dynamicOptions = await this.fetchOptions()
  },
  methods: {
    async fetchOptions() {
      // API 调用示例
      const response = await fetch('/api/options')
      return response.json()
    }
  }
}
</script>

自定义样式单选按钮

通过隐藏原生 input 元素,自定义样式:

<template>
  <div class="custom-radio">
    <div
      v-for="option in options"
      :key="option.value"
      class="radio-item"
      :class="{ active: selectedOption === option.value }"
      @click="selectedOption = option.value"
    >
      {{ option.label }}
    </div>
  </div>
</template>

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

<style>
.custom-radio {
  display: flex;
  gap: 10px;
}
.radio-item {
  padding: 8px 16px;
  border: 1px solid #ccc;
  border-radius: 4px;
  cursor: pointer;
}
.radio-item.active {
  background-color: #42b983;
  color: white;
  border-color: #42b983;
}
</style>

以上方法涵盖了 Vue 中实现单选功能的常见场景,可以根据具体需求选择适合的方式。

vue单选实现

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

相关文章

vue单选按钮实现

vue单选按钮实现

Vue 单选按钮实现 在 Vue 中实现单选按钮可以通过 v-model 绑定数据,结合 input 元素的 type="radio" 属性来实现。以下是几种常见的实现方式: 基础实现 <…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascade…

vue实现排序

vue实现排序

Vue 实现排序的方法 在 Vue 中实现排序可以通过多种方式完成,以下是一些常见的方法: 使用计算属性排序数组 计算属性非常适合对数据进行排序,因为它会在依赖的数据变化时自动更新。以下是一个示例…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理…

vue实现 单选

vue实现 单选

实现 Vue 单选功能 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 可以轻松实现单选功能,将单选按钮的值绑定到…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…