当前位置:首页 > VUE

vue实现多选删除

2026-03-10 02:56:05VUE

Vue 实现多选删除功能

在 Vue 中实现多选删除功能通常涉及以下几个关键步骤:

数据绑定与多选状态管理

创建数据列表和选中状态数组,使用 v-model 绑定复选框:

<template>
  <div v-for="(item, index) in items" :key="item.id">
    <input type="checkbox" v-model="selectedItems" :value="item.id">
    {{ item.name }}
  </div>
  <button @click="deleteSelected">删除选中项</button>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '项目1' },
        { id: 2, name: '项目2' }
      ],
      selectedItems: []
    }
  }
}
</script>

删除逻辑实现

通过过滤原始数组实现删除操作:

methods: {
  deleteSelected() {
    this.items = this.items.filter(
      item => !this.selectedItems.includes(item.id)
    )
    this.selectedItems = [] // 清空选中状态
  }
}

表格场景的优化实现

当数据以表格形式展示时,可结合 el-table(Element UI)实现:

<el-table
  :data="tableData"
  @selection-change="handleSelectionChange">
  <el-table-column type="selection" width="55"></el-table-column>
  <el-table-column prop="name" label="名称"></el-table-column>
</el-table>

<el-button @click="batchDelete">批量删除</el-button>
data() {
  return {
    tableData: [...],
    multipleSelection: []
  }
},
methods: {
  handleSelectionChange(val) {
    this.multipleSelection = val
  },
  batchDelete() {
    const ids = this.multipleSelection.map(item => item.id)
    this.tableData = this.tableData.filter(
      item => !ids.includes(item.id)
    )
  }
}

全选功能扩展

添加全选/反选功能提升用户体验:

<input type="checkbox" @change="toggleAll" :checked="isAllSelected">
<span>全选</span>
computed: {
  isAllSelected() {
    return this.selectedItems.length === this.items.length
  }
},
methods: {
  toggleAll(e) {
    this.selectedItems = e.target.checked
      ? this.items.map(item => item.id)
      : []
  }
}

后端交互处理

实际项目中通常需要调用API进行删除:

vue实现多选删除

async batchDelete() {
  try {
    await api.deleteItems(this.selectedItems)
    this.fetchData() // 重新获取数据
    this.selectedItems = []
  } catch (error) {
    console.error('删除失败', error)
  }
}

注意事项

  • 使用 :key 时建议绑定唯一标识符而非数组索引
  • 大量数据时考虑分页处理避免性能问题
  • 删除前可添加确认对话框防止误操作
  • 根据项目需求选择本地删除或API交互方式

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

相关文章

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心机制基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3)。以下是具体实现方法: 基于 Vue…

vue 实现权限

vue 实现权限

Vue 实现权限控制的方法 在 Vue 项目中实现权限控制通常涉及前端路由、组件和按钮级别的权限管理。以下是几种常见的实现方式: 路由权限控制 通过路由守卫实现权限验证,过滤用户无权访问的路由:…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue实现getapp

vue实现getapp

Vue 中实现全局获取应用实例的方法 在 Vue 3 中,可以通过 getCurrentInstance 方法获取当前组件实例,但需要明确其使用场景和限制。以下是具体实现方式: 方法一:通过 get…

vue 实现搜索

vue 实现搜索

实现 Vue 搜索功能 在 Vue 中实现搜索功能通常涉及以下几个关键步骤: 数据绑定与输入监听 使用 v-model 双向绑定搜索输入框的值,监听用户输入: <template>…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 class…