当前位置:首页 > VUE

vue实现复选

2026-01-07 19:28:15VUE

Vue 实现复选框

在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式:

单个复选框

单个复选框通常用于表示一个布尔值,选中时为 true,未选中时为 false

<template>
  <div>
    <input type="checkbox" id="checkbox" v-model="checked" />
    <label for="checkbox">{{ checked ? '已选中' : '未选中' }}</label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>

多个复选框(绑定到数组)

多个复选框可以绑定到一个数组,选中的复选框的值会被添加到数组中。

vue实现复选

<template>
  <div>
    <input type="checkbox" id="apple" value="apple" v-model="fruits" />
    <label for="apple">苹果</label>

    <input type="checkbox" id="banana" value="banana" v-model="fruits" />
    <label for="banana">香蕉</label>

    <input type="checkbox" id="orange" value="orange" v-model="fruits" />
    <label for="orange">橙子</label>

    <p>选中的水果: {{ fruits }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fruits: []
    }
  }
}
</script>

动态生成复选框

可以通过 v-for 动态生成复选框,适用于选项较多的情况。

<template>
  <div>
    <div v-for="fruit in fruitOptions" :key="fruit.value">
      <input
        type="checkbox"
        :id="fruit.value"
        :value="fruit.value"
        v-model="fruits"
      />
      <label :for="fruit.value">{{ fruit.label }}</label>
    </div>
    <p>选中的水果: {{ fruits }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fruitOptions: [
        { value: 'apple', label: '苹果' },
        { value: 'banana', label: '香蕉' },
        { value: 'orange', label: '橙子' }
      ],
      fruits: []
    }
  }
}
</script>

自定义复选框组件

可以封装一个自定义复选框组件,提高复用性。

vue实现复选

<template>
  <div>
    <custom-checkbox v-model="checked" label="自定义复选框" />
    <p>状态: {{ checked ? '选中' : '未选中' }}</p>
  </div>
</template>

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

export default {
  components: {
    CustomCheckbox
  },
  data() {
    return {
      checked: false
    }
  }
}
</script>

自定义组件 CustomCheckbox.vue 的实现:

<template>
  <div>
    <input type="checkbox" :id="id" v-model="internalValue" />
    <label :for="id">{{ label }}</label>
  </div>
</template>

<script>
export default {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: {
    checked: {
      type: Boolean,
      default: false
    },
    label: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      id: `checkbox-${Math.random().toString(36).substr(2, 9)}`
    }
  },
  computed: {
    internalValue: {
      get() {
        return this.checked
      },
      set(value) {
        this.$emit('change', value)
      }
    }
  }
}
</script>

使用第三方 UI 库

如果项目中使用第三方 UI 库(如 Element UI、Vuetify 等),可以直接使用其提供的复选框组件。

以 Element UI 为例:

<template>
  <div>
    <el-checkbox v-model="checked">复选框</el-checkbox>
    <p>状态: {{ checked ? '选中' : '未选中' }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>

以上方法涵盖了 Vue 中实现复选框的常见场景,可以根据实际需求选择合适的方式。

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

相关文章

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const Bas…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽 子…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景。…

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…

vue实现日历

vue实现日历

Vue 实现日历的基本方法 使用 Vue 实现日历可以通过自定义组件或借助第三方库完成。以下是两种常见实现方式: 自定义日历组件 创建基于 Vue 的日历组件需要处理日期计算和渲染逻辑。核心是生成当…