当前位置:首页 > 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 表格实现方法 使用原生HTML表格 在Vue模板中直接使用HTML的<table>标签,结合v-for动态渲染数据: <template> <table&…

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式的…

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。…

vue实现走势图

vue实现走势图

Vue 实现走势图的方法 使用 ECharts 库 ECharts 是一个强大的数据可视化库,支持多种图表类型,包括走势图(折线图)。在 Vue 项目中可以通过 vue-echarts 封装库或直接使…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…