当前位置:首页 > 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>

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

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

<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>

自定义复选框组件

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

<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 表格实现

Vue 表格实现方法 在 Vue 中实现表格功能可以通过多种方式完成,以下介绍几种常见的方法: 使用原生 HTML 表格 最简单的表格可以通过 Vue 模板中的原生 HTML 表格元素实现: &l…

vue实现anchor

vue实现anchor

Vue 实现 Anchor(锚点)功能 在 Vue 中实现锚点功能可以通过多种方式完成,以下是几种常见的方法: 使用 HTML 原生锚点 HTML 原生锚点是最简单的方式,通过 <a>…

vue实现密码

vue实现密码

Vue 密码输入组件实现 基础密码输入框实现 使用 Vue 的 v-model 指令绑定数据,并通过 type="password" 设置输入类型为密码: <template> &…

vue实现前端分离

vue实现前端分离

Vue 实现前后端分离 前后端分离是一种架构模式,前端负责页面渲染和交互逻辑,后端提供数据接口。Vue.js 作为前端框架,非常适合实现前后端分离的开发模式。 核心实现步骤 创建 Vue 项目 使用…

vue实现sql操作

vue实现sql操作

在Vue中实现SQL操作通常需要结合后端服务或本地数据库技术,因为前端JavaScript无法直接连接SQL数据库。以下是几种常见的实现方式: 通过API与后端交互 Vue前端通过HTTP请求(如a…

vue实现菜单调用

vue实现菜单调用

Vue 实现动态菜单的常见方法 基于路由配置生成菜单 Vue Router 的路由配置可以天然转化为菜单结构,适合权限与路由绑定的系统: // router/index.js const rout…