当前位置:首页 > VUE

vue批量删除实现

2026-03-08 10:04:57VUE

Vue 批量删除实现方法

使用 v-model 绑定选中项

在表格或列表中为每个项目添加复选框,通过 v-model 绑定到数组。选中项的 ID 会存储在数组中。

vue批量删除实现

<template>
  <div>
    <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>
    </table>
    <button @click="batchDelete">批量删除</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ],
      selectedItems: []
    }
  },
  methods: {
    batchDelete() {
      if (this.selectedItems.length === 0) return
      this.items = this.items.filter(item => !this.selectedItems.includes(item.id))
      this.selectedItems = []
    }
  }
}
</script>

结合后端 API 删除

实际项目中通常需要调用 API 进行删除操作。以下示例展示如何结合 axios 发送删除请求。

vue批量删除实现

methods: {
  async batchDelete() {
    if (this.selectedItems.length === 0) return
    try {
      await axios.post('/api/items/batch-delete', { ids: this.selectedItems })
      this.items = this.items.filter(item => !this.selectedItems.includes(item.id))
      this.selectedItems = []
    } catch (error) {
      console.error('删除失败', error)
    }
  }
}

使用 Element UI 实现批量删除

如果使用 Element UI 组件库,可以利用其表格组件内置的多选功能。

<template>
  <el-table
    :data="items"
    @selection-change="handleSelectionChange"
    style="width: 100%">
    <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" :disabled="!selectedItems.length">批量删除</el-button>
</template>

<script>
export default {
  data() {
    return {
      items: [],
      selectedItems: []
    }
  },
  methods: {
    handleSelectionChange(val) {
      this.selectedItems = val.map(item => item.id)
    },
    batchDelete() {
      this.$confirm('确认删除选中项?', '提示', {
        type: 'warning'
      }).then(async () => {
        await this.$http.post('/api/delete', { ids: this.selectedItems })
        this.fetchData() // 重新获取数据
      })
    }
  }
}
</script>

性能优化建议

对于大数据量场景,建议采用分页删除策略,避免一次性发送过多 ID。可以分批发送删除请求,或让后端支持范围删除。

// 分批删除示例
const batchSize = 50
for (let i = 0; i < this.selectedItems.length; i += batchSize) {
  const batchIds = this.selectedItems.slice(i, i + batchSize)
  await axios.post('/api/batch-delete', { ids: batchIds })
}

标签: 批量vue
分享给朋友:

相关文章

vue单页面实现登录

vue单页面实现登录

实现登录功能的基本流程 在Vue单页面应用中实现登录功能,通常需要以下几个关键步骤: 创建登录表单组件 使用Vue的模板语法创建包含用户名和密码输入框的表单,并绑定数据到组件的data属性。 <…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue实现rtc

vue实现rtc

Vue 实现 RTC 的步骤 安装依赖 在 Vue 项目中安装 WebRTC 相关依赖,如 simple-peer 或 peerjs,用于简化 WebRTC 的实现。 运行以下命令安装 simple-…

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

vue实现banner

vue实现banner

Vue实现Banner轮播 使用Vue实现Banner轮播可以通过第三方库如swiper或vue-awesome-swiper,也可以手动实现基础轮播效果。以下是两种常见方法: 使用vue-awes…

vue框架实现CRM

vue框架实现CRM

Vue框架实现CRM系统 使用Vue框架构建CRM(客户关系管理)系统需要结合前端技术栈和后端API。以下为关键实现方法: 技术选型 核心框架:Vue 3(Composition API)…