当前位置:首页 > VUE

vue实现checkbox

2026-03-28 00:57:30VUE

Vue 实现 Checkbox

在 Vue 中实现复选框(checkbox)可以通过 v-model 实现数据双向绑定,结合 v-for 动态渲染多个选项。以下是几种常见实现方式:

单个 Checkbox 绑定

通过 v-model 绑定布尔值,表示复选框的选中状态:

<template>
  <div>
    <input type="checkbox" id="checkbox" v-model="isChecked" />
    <label for="checkbox">是否同意协议</label>
    <p>当前状态:{{ isChecked ? '已选中' : '未选中' }}</p>
  </div>
</template>

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

多个 Checkbox 绑定数组

通过 v-model 绑定数组,存储选中的值:

<template>
  <div>
    <div v-for="option in options" :key="option.value">
      <input 
        type="checkbox" 
        :id="option.value" 
        :value="option.value" 
        v-model="selectedOptions" 
      />
      <label :for="option.value">{{ option.label }}</label>
    </div>
    <p>已选:{{ selectedOptions }}</p>
  </div>
</template>

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

自定义 Checkbox 组件

封装可复用的 Checkbox 组件,支持自定义样式和事件:

<!-- Checkbox.vue -->
<template>
  <div class="custom-checkbox" @click="toggle">
    <div :class="['checkbox-inner', { 'is-checked': isChecked }]"></div>
    <span class="checkbox-label"><slot /></span>
  </div>
</template>

<script>
export default {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: {
    checked: Boolean
  },
  computed: {
    isChecked() {
      return this.checked
    }
  },
  methods: {
    toggle() {
      this.$emit('change', !this.isChecked)
    }
  }
}
</script>

<style scoped>
.custom-checkbox {
  display: flex;
  align-items: center;
  cursor: pointer;
}
.checkbox-inner {
  width: 16px;
  height: 16px;
  border: 1px solid #dcdfe6;
  margin-right: 8px;
}
.checkbox-inner.is-checked {
  background-color: #409eff;
  border-color: #409eff;
}
</style>

使用自定义组件:

<template>
  <div>
    <Checkbox v-model="checked">自定义复选框</Checkbox>
    <p>状态:{{ checked }}</p>
  </div>
</template>

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

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

与表单验证集成

结合 VuelidateElement UI 等库实现表单验证:

vue实现checkbox

<template>
  <div>
    <input 
      type="checkbox" 
      v-model="form.agree" 
      @change="$v.form.agree.$touch()"
    />
    <label>同意条款</label>
    <p v-if="$v.form.agree.$error" class="error">必须同意条款</p>
  </div>
</template>

<script>
import { required } from 'vuelidate/lib/validators'

export default {
  data() {
    return {
      form: {
        agree: false
      }
    }
  },
  validations: {
    form: {
      agree: { required }
    }
  }
}
</script>

以上方法覆盖了 Vue 中实现复选框的常见场景,可根据实际需求选择或组合使用。

标签: vuecheckbox
分享给朋友:

相关文章

vue前端实现搜索

vue前端实现搜索

实现搜索功能的基本方法 在Vue中实现搜索功能通常涉及以下几个关键步骤,结合数据绑定、计算属性和方法调用来动态过滤和显示结果。 数据绑定与输入处理 使用v-model双向绑定搜索输入框的值,监听用户…

vue实现图库

vue实现图库

Vue 实现图库的基本方法 使用 Vue 实现图库功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用 Vue 和第三方库(如 Vue Gallery) 安装 vue-gallery 或…

ssh vue 实现

ssh vue 实现

使用SSH连接Vue项目部署的服务器 在Vue项目开发或部署过程中,可能需要通过SSH连接到远程服务器进行配置或维护。以下是实现SSH连接并部署Vue项目的关键步骤: 生成SSH密钥对 在本地终端运…

vue的实现

vue的实现

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现的主要技术细节。 响应式系统 Vue 的响…

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和有…

vue实现分步

vue实现分步

Vue 实现分步功能 在 Vue 中实现分步功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 通过动态组件切换不同的步骤内容,结合 v-if 或 component 标签实现分步逻辑。…