当前位置:首页 > VUE

vue实现单选互斥

2026-02-20 00:13:19VUE

Vue 实现单选互斥的方法

在 Vue 中实现单选互斥功能(即多个选项中只能选择一个),可以通过以下几种方式实现:

使用 v-model 绑定同一变量

通过将多个单选按钮(<input type="radio">)绑定到同一个响应式变量,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>
  </div>
</template>

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

使用 v-for 动态渲染选项

如果选项是动态生成的,可以通过 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>
  </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>

自定义组件实现互斥

封装一个可复用的单选组组件:

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

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

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

RadioGroup.vue 中:

<template>
  <div>
    <label v-for="option in options" :key="option.value">
      <input
        type="radio"
        :value="option.value"
        :checked="modelValue === option.value"
        @change="$emit('update:modelValue', option.value)"
      />
      {{ option.label }}
    </label>
  </div>
</template>

<script>
export default {
  props: {
    modelValue: { type: String, default: '' },
    options: { type: Array, required: true }
  }
}
</script>

使用第三方库

对于复杂场景,可以使用第三方库如 vue-radioelement-ui 的单选组件:

<template>
  <el-radio-group v-model="selectedOption">
    <el-radio v-for="option in options" :key="option.value" :label="option.value">
      {{ option.label }}
    </el-radio>
  </el-radio-group>
</template>

注意事项

  • 确保所有互斥的单选按钮绑定到同一个 v-model 变量。
  • 动态渲染时需为每个选项设置唯一的 key
  • 自定义组件时需正确处理 modelValueupdate:modelValue 事件。

以上方法均能实现单选互斥功能,可根据项目需求选择合适的方式。

vue实现单选互斥

标签: 单选互斥
分享给朋友:

相关文章

vue 实现表格单选

vue 实现表格单选

实现表格单选的基本思路 在Vue中实现表格单选功能,通常需要结合表格组件(如el-table)和数据绑定。核心逻辑是通过点击事件更新当前选中行的唯一标识(如id),并通过:class或:style绑定…

vue 实现图片单选

vue 实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能,可以通过结合 v-model 和自定义事件来实现。以下是具体实现方法: 方法一:使用 v-model 和计算属性 创建一个 Vue 组件,…

vue实现单选状态

vue实现单选状态

实现单选状态的方法 在Vue中实现单选状态通常可以通过以下几种方式完成,具体取决于使用场景和需求。 使用v-model绑定单选按钮 通过v-model可以轻松实现单选按钮的选择状态绑定。将同一组单…

vue 实现单选全选

vue 实现单选全选

实现单选和全选功能 在Vue中实现单选和全选功能,可以通过v-model指令绑定数据,结合计算属性和方法来实现交互逻辑。以下是一个完整的实现方案。 基础数据结构 定义列表数据,每个数据项包含选中状态…

vue实现tab互斥

vue实现tab互斥

Vue 实现 Tab 互斥的方法 使用 v-model 和计算属性 通过 v-model 绑定当前激活的 Tab,利用计算属性确保只有一个 Tab 处于激活状态。 <template&…

vue实现单选表格

vue实现单选表格

实现单选表格的基本思路 在Vue中实现单选表格通常需要结合<table>元素和Vue的数据绑定特性。通过v-model或自定义事件管理选中状态,确保同一时间仅有一行被选中。 使用…