当前位置:首页 > VUE

vue表格实现复选框

2026-03-06 20:28:30VUE

实现复选框的基本方法

在Vue中实现表格复选框功能,可以通过v-model绑定数据,结合v-for渲染表格行。以下是一个基础示例:

<template>
  <table>
    <thead>
      <tr>
        <th><input type="checkbox" v-model="selectAll" @change="toggleAll"></th>
        <th>Name</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in items" :key="item.id">
        <td><input type="checkbox" v-model="selectedItems" :value="item.id"></td>
        <td>{{ item.name }}</td>
      </tr>
    </tbody>
  </table>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ],
      selectedItems: [],
      selectAll: false
    }
  },
  methods: {
    toggleAll() {
      this.selectedItems = this.selectAll 
        ? this.items.map(item => item.id) 
        : [];
    }
  }
}
</script>

使用第三方组件库

若使用Element UI等组件库,可直接调用现成的表格复选框功能:

vue表格实现复选框

<template>
  <el-table
    :data="items"
    @selection-change="handleSelectionChange">
    <el-table-column type="selection" width="55"></el-table-column>
    <el-table-column prop="name" label="Name"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ],
      selectedItems: []
    }
  },
  methods: {
    handleSelectionChange(val) {
      this.selectedItems = val;
    }
  }
}
</script>

自定义复选框样式

通过CSS自定义复选框样式,提升视觉效果:

vue表格实现复选框

.custom-checkbox {
  appearance: none;
  width: 16px;
  height: 16px;
  border: 1px solid #ccc;
  border-radius: 3px;
  cursor: pointer;
  position: relative;
}

.custom-checkbox:checked {
  background-color: #409EFF;
  border-color: #409EFF;
}

.custom-checkbox:checked::after {
  content: "✓";
  color: white;
  position: absolute;
  left: 3px;
  top: -1px;
}

性能优化建议

对于大数据量表格,建议采用虚拟滚动或分页加载。可通过计算属性优化选中状态判断:

computed: {
  isAllSelected() {
    return this.selectedItems.length === this.items.length;
  }
}

完整示例代码

以下是一个包含全选/反选功能的完整实现:

<template>
  <div>
    <button @click="toggleAll">{{ isAllSelected ? 'Unselect All' : 'Select All' }}</button>
    <table>
      <tbody>
        <tr v-for="item in items" :key="item.id">
          <td>
            <input 
              type="checkbox" 
              :checked="isSelected(item.id)"
              @change="toggleSelect(item.id)"
            >
          </td>
          <td>{{ item.name }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [/* your data */],
      selectedItems: new Set()
    }
  },
  computed: {
    isAllSelected() {
      return this.selectedItems.size === this.items.length;
    }
  },
  methods: {
    toggleSelect(id) {
      this.selectedItems.has(id) 
        ? this.selectedItems.delete(id) 
        : this.selectedItems.add(id);
    },
    toggleAll() {
      if (this.isAllSelected) {
        this.selectedItems.clear();
      } else {
        this.items.forEach(item => this.selectedItems.add(item.id));
      }
    },
    isSelected(id) {
      return this.selectedItems.has(id);
    }
  }
}
</script>

标签: 复选框表格
分享给朋友:

相关文章

如何实现vue表格联动

如何实现vue表格联动

实现 Vue 表格联动的方法 数据绑定与响应式更新 通过 Vue 的响应式特性,将多个表格的数据绑定到同一个数据源或计算属性。当一个表格的数据发生变化时,另一个表格会自动更新。例如: data()…

css表格制作

css表格制作

CSS表格制作方法 使用CSS创建表格可以通过多种方式实现,以下是常见的几种方法: 使用HTML原生表格标签结合CSS样式 <table class="styled-table">…

怎么制作css表格

怎么制作css表格

制作CSS表格的方法 使用HTML表格标签结合CSS样式 通过HTML的<table>、<tr>、<td>等标签创建表格结构,再使用CSS美化样式。例如: <…

vue实现sku表格

vue实现sku表格

Vue实现SKU表格的方法 SKU(Stock Keeping Unit)表格常用于电商平台展示商品的多属性组合,例如颜色、尺寸等。以下是基于Vue的实现方法: 数据结构设计 SKU的核心是属性组合…

vue实现表格刷新

vue实现表格刷新

Vue 实现表格刷新的方法 使用 v-if 强制重新渲染 通过 v-if 控制表格的显示与隐藏,切换时 Vue 会重新渲染组件。 <template> <button @cli…

vue实现表格报表

vue实现表格报表

Vue 实现表格报表的方法 使用 Element UI 的表格组件 Element UI 提供了功能丰富的表格组件,适合快速实现报表功能。安装 Element UI 后,可以直接使用 el-table…