结合 v-model 实现数据绑定。以下是一个基础示例: <…">
当前位置:首页 > VUE

vue组件实现单选按钮

2026-02-22 22:52:37VUE

实现单选按钮的基本结构

在 Vue 中实现单选按钮可以通过原生 HTML 的 <input type="radio"> 结合 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>
    <p>Selected: {{ 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: {{ selectedOption }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'apple', label: 'Apple' },
        { value: 'banana', label: 'Banana' },
        { value: 'orange', label: 'Orange' }
      ]
    }
  }
}
</script>

封装可复用的单选组件

将单选按钮组封装为独立组件,提高复用性:

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

<script>
export default {
  props: {
    modelValue: String,
    options: Array
  },
  data() {
    return {
      internalValue: this.modelValue
    }
  },
  watch: {
    modelValue(newVal) {
      this.internalValue = newVal
    }
  }
}
</script>

使用封装后的组件

在父组件中调用:

<template>
  <div>
    <RadioGroup
      v-model="selectedFruit"
      :options="fruitOptions"
    />
    <p>Selected Fruit: {{ selectedFruit }}</p>
  </div>
</template>

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

export default {
  components: { RadioGroup },
  data() {
    return {
      selectedFruit: '',
      fruitOptions: [
        { value: 'apple', label: 'Apple' },
        { value: 'banana', label: 'Banana' }
      ]
    }
  }
}
</script>

添加样式和自定义事件

通过 CSS 和事件监听增强交互性:

<template>
  <div class="radio-group">
    <label
      v-for="option in options"
      :key="option.value"
      :class="{ 'active': selectedOption === option.value }"
    >
      <input
        type="radio"
        v-model="selectedOption"
        :value="option.value"
        @change="handleChange"
      />
      {{ option.label }}
    </label>
  </div>
</template>

<script>
export default {
  props: ['options'],
  data() {
    return {
      selectedOption: ''
    }
  },
  methods: {
    handleChange() {
      this.$emit('selected', this.selectedOption)
    }
  }
}
</script>

<style>
.radio-group label {
  padding: 8px 12px;
  border: 1px solid #ddd;
  cursor: pointer;
}
.radio-group label.active {
  background-color: #e0f7fa;
  border-color: #4dd0e1;
}
</style>

vue组件实现单选按钮

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

相关文章

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性,或者使用第三方 UI 库…

vue实现单选

vue实现单选

Vue 实现单选按钮 在 Vue 中实现单选按钮通常使用 v-model 绑定数据,结合 <input type="radio"> 或第三方组件库(如 Element UI、Ant Des…

实现vue组件

实现vue组件

创建 Vue 组件 Vue 组件可以通过单文件组件(.vue 文件)或直接在 JavaScript 中定义。以下是两种常见实现方式。 单文件组件方式 单文件组件包含模板、脚本和样式三部分,适合复杂项…

vue单选实现

vue单选实现

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

vue实现div单选

vue实现div单选

实现 div 单选功能 在 Vue 中实现 div 单选功能可以通过多种方式完成。以下是几种常见的实现方法: 使用 v-model 和计算属性 通过 v-model 绑定一个变量,结合计算属性实现单…

jquery 单选

jquery 单选

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