当前位置:首页 > VUE

vue 单选组合 实现

2026-02-19 21:11:01VUE

Vue 单选组合实现

在 Vue 中实现单选组合(Radio Group)可以通过多种方式完成,以下是一些常见的方法:

使用原生 HTML 和 v-model

通过原生 HTML 的 input[type="radio"] 结合 Vue 的 v-model 实现单选组合:

<template>
  <div>
    <label>
      <input type="radio" v-model="selectedOption" value="option1" />
      Option 1
    </label>
    <label>
      <input type="radio" v-model="selectedOption" value="option2" />
      Option 2
    </label>
    <label>
      <input type="radio" v-model="selectedOption" value="option3" />
      Option 3
    </label>
    <p>Selected option: {{ selectedOption }}</p>
  </div>
</template>

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

使用第三方组件库

许多 Vue 组件库(如 Element UI、Vuetify、Ant Design Vue 等)提供了封装好的单选组合组件:

vue 单选组合 实现

Element UI 示例:

<template>
  <el-radio-group v-model="selectedOption">
    <el-radio label="option1">Option 1</el-radio>
    <el-radio label="option2">Option 2</el-radio>
    <el-radio label="option3">Option 3</el-radio>
  </el-radio-group>
</template>

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

Vuetify 示例:

vue 单选组合 实现

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

自定义 Radio Group 组件

如果需要高度定制化的单选组合,可以封装一个自定义组件:

<template>
  <div class="custom-radio-group">
    <div
      v-for="option in options"
      :key="option.value"
      class="custom-radio"
      :class="{ 'active': modelValue === option.value }"
      @click="$emit('update:modelValue', option.value)"
    >
      {{ option.label }}
    </div>
  </div>
</template>

<script>
export default {
  props: {
    options: {
      type: Array,
      required: true,
      validator: (options) => options.every(option => 'value' in option && 'label' in option)
    },
    modelValue: {
      type: [String, Number],
      required: true
    }
  },
  emits: ['update:modelValue']
}
</script>

<style>
.custom-radio-group {
  display: flex;
  gap: 10px;
}
.custom-radio {
  padding: 8px 16px;
  border: 1px solid #ddd;
  cursor: pointer;
}
.custom-radio.active {
  background-color: #409eff;
  color: white;
}
</style>

使用自定义组件:

<template>
  <CustomRadioGroup
    v-model="selectedOption"
    :options="[
      { value: 'option1', label: 'Option 1' },
      { value: 'option2', label: 'Option 2' },
      { value: 'option3', label: 'Option 3' }
    ]"
  />
</template>

动态生成选项

当选项需要从 API 或其他动态源获取时:

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

<script>
export default {
  data() {
    return {
      selectedOption: '',
      dynamicOptions: []
    }
  },
  async created() {
    // 模拟 API 调用
    this.dynamicOptions = await fetchOptions()
  },
  methods: {
    async fetchOptions() {
      // 实际项目中替换为真实的 API 调用
      return [
        { id: 1, value: 'opt1', label: 'Dynamic Option 1' },
        { id: 2, value: 'opt2', label: 'Dynamic Option 2' }
      ]
    }
  }
}
</script>

以上方法涵盖了从基础实现到高级定制的各种场景,可以根据项目需求选择最适合的方案。

标签: 组合单选
分享给朋友:

相关文章

jquery 单选

jquery 单选

jQuery 单选按钮操作 在 jQuery 中,操作单选按钮(Radio Button)通常涉及选中状态、取值和事件绑定。以下是常见操作示例: 获取选中的单选按钮值 通过 :checked 选择器…

vue 实现组单选

vue 实现组单选

Vue 实现单选组 在 Vue 中实现单选组可以通过多种方式,以下是几种常见的实现方法: 使用 v-model 绑定单选按钮组 通过 v-model 绑定一个变量,单选按钮的 value 属性对应…

vue实现单选功能

vue实现单选功能

使用 <input type="radio"> 实现单选 在 Vue 中可以通过 v-model 绑定单选按钮组的值,确保同一组单选按钮的 name 属性相同。 <template…

vue实现单选的功能

vue实现单选的功能

Vue 实现单选功能的方法 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定到同一个变量,可以实现单选效果。…

vue中表格实现单选

vue中表格实现单选

实现 Vue 表格单选功能 在 Vue 中实现表格的单选功能,可以通过以下方法完成。假设使用的是 Element UI 或其他类似的 UI 框架,以下是具体实现方式。 使用 Element UI 的…

vue实现单选答题功能

vue实现单选答题功能

实现单选答题功能的基本思路 在Vue中实现单选答题功能,可以通过v-model绑定选项值,结合v-for渲染选项列表,并监听选择事件。以下是一个完整的实现示例。 创建答题组件 新建一个Vue单文件组…