结合 v-model,或借助第三方 UI 库(如 Elem…">
当前位置:首页 > VUE

vue实现 单选

2026-02-10 08:08:24VUE

Vue 实现单选功能

在 Vue 中实现单选功能可以通过多种方式完成,常见的有使用原生 <input type="radio"> 结合 v-model,或借助第三方 UI 库(如 Element UI、Ant Design Vue 等)。以下是几种实现方法:

使用原生 HTML 和 v-model

通过原生 <input type="radio"> 绑定 v-model 实现数据双向绑定。

vue实现 单选

<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: '',
    };
  },
};
</script>

使用动态渲染选项

如果需要动态渲染单选选项,可以通过 v-for 遍历数组。

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

<script>
export default {
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'option1', label: 'Option 1' },
        { value: 'option2', label: 'Option 2' },
        { value: 'option3', label: 'Option 3' },
      ],
    };
  },
};
</script>

使用 Element UI 的单选组件

如果项目中使用了 Element UI,可以直接使用 <el-radio> 组件。

vue实现 单选

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

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

使用 Ant Design Vue 的单选组件

如果项目中使用了 Ant Design Vue,可以使用 <a-radio> 组件。

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

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

自定义单选组件

如果需要更灵活的单选功能,可以封装一个自定义单选组件。

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

<script>
export default {
  props: {
    options: {
      type: Array,
      required: true,
    },
    value: {
      type: String,
      default: '',
    },
  },
  data() {
    return {
      selectedOption: this.value,
    };
  },
  methods: {
    selectOption(value) {
      this.selectedOption = value;
      this.$emit('input', value);
    },
  },
  watch: {
    value(newVal) {
      this.selectedOption = newVal;
    },
  },
};
</script>

<style scoped>
.active {
  background-color: #f0f0f0;
}
</style>

注意事项

  • 使用 v-model 时,确保绑定的数据是响应式的。
  • 动态渲染选项时,为每个选项设置唯一的 key
  • 使用第三方 UI 库时,注意组件的 API 和事件绑定方式。
  • 自定义组件时,可以通过 propsemit 实现父子组件通信。

以上方法可以根据项目需求选择适合的实现方式。

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

相关文章

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

实现简易vue

实现简易vue

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

vue实现排序

vue实现排序

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

vue实现handsontable

vue实现handsontable

Vue 中实现 Handsontable 要在 Vue 项目中集成 Handsontable,可以使用官方提供的 @handsontable/vue 封装库。以下是一个完整的实现步骤。 安装依赖 确…

vue实现登出

vue实现登出

实现Vue登出功能 登出功能通常涉及清除用户会话、令牌或本地存储的数据,并重定向到登录页面。以下是几种常见的实现方式: 清除用户令牌和状态 在Vuex的store中定义一个logout mutati…

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和…