当前位置:首页 > VUE

vue实现表格取消选择

2026-02-21 19:36:00VUE

Vue 实现表格取消选择的方法

使用 v-model 和 computed 属性

在表格中绑定选中状态,通过计算属性管理选中项。取消选择时,直接操作绑定的数组。

vue实现表格取消选择

<template>
  <table>
    <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>
    <button @click="clearSelection">取消选择</button>
  </table>
</template>

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

使用 ref 和 DOM 操作

通过 ref 获取所有复选框元素,手动取消选中状态。

vue实现表格取消选择

<template>
  <table>
    <tr v-for="item in items" :key="item.id">
      <td>
        <input 
          type="checkbox" 
          :ref="`checkbox-${item.id}`"
          @change="handleSelect(item.id)"
        >
      </td>
      <td>{{ item.name }}</td>
    </tr>
    <button @click="clearSelection">取消选择</button>
  </table>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ],
      selectedItems: []
    }
  },
  methods: {
    handleSelect(id) {
      const index = this.selectedItems.indexOf(id)
      if (index === -1) {
        this.selectedItems.push(id)
      } else {
        this.selectedItems.splice(index, 1)
      }
    },
    clearSelection() {
      this.selectedItems = []
      this.items.forEach(item => {
        this.$refs[`checkbox-${item.id}`][0].checked = false
      })
    }
  }
}
</script>

使用事件代理

在表格外层元素上监听点击事件,通过事件委托处理取消选择逻辑。

<template>
  <div @click="handleTableClick">
    <table ref="table">
      <tr v-for="item in items" :key="item.id">
        <td>
          <input 
            type="checkbox" 
            :data-id="item.id"
            :checked="selectedItems.includes(item.id)"
          >
        </td>
        <td>{{ item.name }}</td>
      </tr>
    </table>
    <button @click="clearSelection">取消选择</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ],
      selectedItems: []
    }
  },
  methods: {
    handleTableClick(e) {
      if (e.target.type === 'checkbox') {
        const id = Number(e.target.dataset.id)
        this.toggleSelection(id)
      }
    },
    toggleSelection(id) {
      const index = this.selectedItems.indexOf(id)
      if (index === -1) {
        this.selectedItems.push(id)
      } else {
        this.selectedItems.splice(index, 1)
      }
    },
    clearSelection() {
      this.selectedItems = []
      const checkboxes = this.$refs.table.querySelectorAll('input[type="checkbox"]')
      checkboxes.forEach(checkbox => {
        checkbox.checked = false
      })
    }
  }
}
</script>

使用第三方表格组件

如果使用 Element UI 等组件库,可以利用其内置方法实现取消选择。

<template>
  <el-table
    ref="multipleTable"
    :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>
  <el-button @click="clearSelection">取消选择</el-button>
</template>

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

标签: 表格vue
分享给朋友:

相关文章

vue 实现grid

vue 实现grid

在Vue中实现Grid布局可以通过多种方式完成,以下是几种常见的方法: 使用CSS Grid布局 CSS Grid是一种强大的布局系统,可以直接在Vue组件的样式中使用。以下是一个简单的示例:…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FFm…

vue实现水印

vue实现水印

Vue 实现水印的方法 使用 CSS 背景图 通过 CSS 的 background-image 和 background-repeat 属性实现水印效果。创建一个包含水印文本的 Canvas,将其转…

vue 实现筛选

vue 实现筛选

实现筛选功能的基本方法 在Vue中实现筛选功能通常涉及以下几个核心步骤: 数据绑定与筛选逻辑 使用v-model绑定筛选条件到Vue实例的数据属性,结合计算属性实现动态筛选: data() {…

vue 实现流程

vue 实现流程

Vue 实现流程 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是 Vue 实现的基本流程: 安装 Vue.js 通过 CDN 引入或使用 npm/yarn 安装:…

vue cli 实现

vue cli 实现

Vue CLI 实现步骤 安装 Vue CLI 确保 Node.js 版本在 8.9 或以上。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 创建新项目…