当前位置:首页 > VUE

vue 实现复选

2026-01-07 07:29:44VUE

Vue 实现复选功能

在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法:

使用 v-model 绑定数组

通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。

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

<script>
export default {
  data() {
    return {
      options: [
        { value: 'apple', label: 'Apple' },
        { value: 'banana', label: 'Banana' },
        { value: 'orange', label: 'Orange' }
      ],
      selectedOptions: []
    };
  }
};
</script>

自定义复选框组件

如果需要更复杂的逻辑或样式,可以封装一个自定义复选框组件。

<template>
  <div>
    <checkbox-group v-model="selectedItems">
      <checkbox-item value="item1">Item 1</checkbox-item>
      <checkbox-item value="item2">Item 2</checkbox-item>
      <checkbox-item value="item3">Item 3</checkbox-item>
    </checkbox-group>
    <p>Selected: {{ selectedItems }}</p>
  </div>
</template>

<script>
import CheckboxGroup from './CheckboxGroup.vue';
import CheckboxItem from './CheckboxItem.vue';

export default {
  components: { CheckboxGroup, CheckboxItem },
  data() {
    return {
      selectedItems: []
    };
  }
};
</script>

动态生成复选框

根据数据动态生成复选框,适合选项数量不固定的场景。

<template>
  <div>
    <div v-for="item in dynamicItems" :key="item.id">
      <input 
        type="checkbox" 
        v-model="checkedItems" 
        :value="item.id"
      >
      {{ item.name }}
    </div>
    <p>Checked IDs: {{ checkedItems }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dynamicItems: [
        { id: 1, name: 'Option A' },
        { id: 2, name: 'Option B' },
        { id: 3, name: 'Option C' }
      ],
      checkedItems: []
    };
  }
};
</script>

全选与反选功能

实现全选或反选逻辑,可以通过计算属性或方法完成。

<template>
  <div>
    <label>
      <input type="checkbox" v-model="selectAll"> Select All
    </label>
    <div v-for="item in items" :key="item.id">
      <input 
        type="checkbox" 
        v-model="selectedIds" 
        :value="item.id"
      >
      {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' }
      ],
      selectedIds: []
    };
  },
  computed: {
    selectAll: {
      get() {
        return this.selectedIds.length === this.items.length;
      },
      set(value) {
        this.selectedIds = value ? this.items.map(item => item.id) : [];
      }
    }
  }
};
</script>

注意事项

  • 确保 v-model 绑定的数组初始化为空数组,否则可能导致绑定失效。
  • 动态生成复选框时,为每个选项设置唯一的 key 以优化渲染性能。
  • 使用自定义组件时,注意父子组件之间的数据传递和事件通信。

vue 实现复选

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

相关文章

简易实现vue

简易实现vue

简易 Vue 实现思路 核心是数据劫持结合发布-订阅模式,通过 Object.defineProperty 或 Proxy 监听数据变化,触发视图更新。 数据劫持实现 class Observer…

vue实现菜单调用

vue实现菜单调用

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

前端vue登录功能实现

前端vue登录功能实现

Vue 登录功能实现步骤 创建登录表单组件 在 Vue 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含用户名和密码输入框以及提交按钮。 <template> &l…

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [..…

vue如何实现放大缩小

vue如何实现放大缩小

Vue实现放大缩小功能的方法 在Vue中实现元素的放大缩小功能,可以通过CSS变换、第三方库或直接操作DOM样式来实现。以下是几种常见的方法: 使用CSS transform属性 通过绑定Vue的d…

vue弹幕实现不重叠

vue弹幕实现不重叠

实现 Vue 弹幕不重叠的方法 CSS 定位与动画控制 通过绝对定位和动态计算弹幕轨道高度,确保弹幕在不同轨道上运行。每条弹幕占据固定高度的轨道,避免重叠。 // 弹幕轨道高度计算 const t…