或使用第三…">
当前位置:首页 > VUE

vue实现radio

2026-01-13 00:24:51VUE

Vue 实现 Radio 单选按钮

在 Vue 中实现 Radio 单选按钮可以通过 v-model 绑定数据,结合原生 HTML 的 <input type="radio"> 或使用第三方组件库(如 Element UI、Vuetify 等)。以下是几种常见实现方式:

原生 HTML 实现

使用原生 <input type="radio"> 绑定 v-model,通过 value 属性区分选项:

vue实现radio

<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 动态渲染 Radio 选项,适用于选项数据来自后端或动态配置的场景:

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

使用 Element UI 的 Radio 组件

若项目中使用 Element UI,可以直接使用其封装好的 el-radio 组件:

vue实现radio

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

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

自定义 Radio 组件

封装一个可复用的自定义 Radio 组件,支持灵活样式和功能扩展:

<!-- CustomRadio.vue -->
<template>
  <label class="custom-radio">
    <input
      type="radio"
      :checked="modelValue === value"
      @change="$emit('update:modelValue', value)"
    />
    <span class="radio-label">{{ label }}</span>
  </label>
</template>

<script>
export default {
  props: {
    modelValue: { type: [String, Number], required: true },
    value: { type: [String, Number], required: true },
    label: { type: String, required: true }
  }
};
</script>

<style scoped>
.custom-radio {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
}
</style>

使用时通过 v-model 绑定数据:

<template>
  <div>
    <CustomRadio
      v-model="selectedOption"
      value="red"
      label="Red"
    />
    <CustomRadio
      v-model="selectedOption"
      value="blue"
      label="Blue"
    />
  </div>
</template>

<script>
import CustomRadio from './CustomRadio.vue';

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

注意事项

  • v-model 绑定:确保绑定的数据是响应式的(在 data 中声明)。
  • 值类型:Radio 的 value 可以是字符串、数字或布尔值,需与 v-model 绑定的数据类型一致。
  • 样式兼容性:原生 Radio 的默认样式可能不美观,可通过 CSS 隐藏原生控件并自定义外观(如伪元素模拟选中状态)。

标签: vueradio
分享给朋友:

相关文章

vue实现横向导航

vue实现横向导航

vue实现横向导航的方法 使用Flex布局实现横向导航 在Vue中可以通过Flex布局快速实现横向导航。创建一个组件,使用display: flex和flex-direction: row属性使导航项…

vue实现防抖节流

vue实现防抖节流

Vue 中实现防抖(Debounce) 防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。 方法1:使用 Lodash 的 _.debou…

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要跳…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue 实现流程

vue 实现流程

Vue 实现流程 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是 Vue 实现的基本流程: 安装 Vue.js 通过 CDN 引入或使用 npm/yarn 安装:…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…