当前位置:首页 > VUE

vue实现表格复选

2026-02-10 19:39:32VUE

Vue实现表格复选的步骤

基础实现

使用v-model绑定复选框和数组,通过v-for渲染表格行。

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

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

性能优化方案

对于大数据量表格,使用虚拟滚动或分页加载。

<template>
  <div class="virtual-scroll" @scroll="handleScroll">
    <div class="scroll-content" :style="{ height: totalHeight + 'px' }">
      <div v-for="(item, index) in visibleData" :key="item.id" :style="{ transform: `translateY(${item.offset}px)` }">
        <input type="checkbox" v-model="selectedItems" :value="item.id">
        {{ item.name }}
      </div>
    </div>
  </div>
</template>

高级功能实现

添加行点击选中、Shift多选等增强交互。

methods: {
  handleRowClick(item, event) {
    if (event.shiftKey && this.lastSelected) {
      const start = this.tableData.findIndex(i => i.id === this.lastSelected)
      const end = this.tableData.findIndex(i => i.id === item.id)
      const range = this.tableData.slice(Math.min(start, end), Math.max(start, end) + 1)
      range.forEach(row => {
        if (!this.selectedItems.includes(row.id)) {
          this.selectedItems.push(row.id)
        }
      })
    } else {
      const index = this.selectedItems.indexOf(item.id)
      if (index === -1) {
        this.selectedItems.push(item.id)
      } else {
        this.selectedItems.splice(index, 1)
      }
    }
    this.lastSelected = item.id
  }
}

状态管理方案

对于复杂应用,建议使用Vuex管理选中状态。

// store.js
export default new Vuex.Store({
  state: {
    selectedItems: []
  },
  mutations: {
    TOGGLE_ITEM(state, itemId) {
      const index = state.selectedItems.indexOf(itemId)
      if (index === -1) {
        state.selectedItems.push(itemId)
      } else {
        state.selectedItems.splice(index, 1)
      }
    },
    CLEAR_SELECTION(state) {
      state.selectedItems = []
    }
  }
})

样式优化技巧

添加CSS改善用户体验,如悬停效果和选中状态。

tr:hover {
  background-color: #f5f5f5;
}
tr.selected {
  background-color: #e3f2fd;
}
input[type="checkbox"] {
  cursor: pointer;
}

vue实现表格复选

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

相关文章

vue实现表格复选

vue实现表格复选

Vue实现表格复选的方法 基础实现 在Vue中实现表格复选功能可以通过v-model绑定复选框的状态,结合v-for循环渲染表格数据。以下是一个基础示例: <template> &l…

vue表格实现教学

vue表格实现教学

基础表格实现 使用 Vue 的 v-for 指令渲染数组数据到表格中。 <template> <table> <thead> <…

vue表格组件实现

vue表格组件实现

Vue表格组件实现 基础表格实现 使用el-table组件实现基础表格功能。安装Element UI后,引入el-table和el-table-column组件。 <template>…

用vue实现表格

用vue实现表格

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以轻松渲染表格数据。准备一个数据数组,在模板中用 v-for 循环渲染。 <template> <ta…

vue实现表格树

vue实现表格树

Vue 实现表格树的方法 使用递归组件实现树形表格 在 Vue 中可以通过递归组件实现树形表格结构。定义一个组件,该组件可以调用自身来渲染子节点。 <template> <t…

vue实现表格修改

vue实现表格修改

Vue 实现表格修改的方法 使用 v-model 绑定数据 在 Vue 中可以通过 v-model 实现双向数据绑定,适用于表格单元格的编辑。 为表格的每个单元格绑定 v-model,动态修改数据。…