当前位置:首页 > VUE

vue批量删除实现

2026-02-11 10:27:01VUE

实现 Vue 批量删除功能

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

数据绑定与选择控制

使用 v-model 绑定复选框数组,存储被选中项的 ID 或索引:

<template>
  <div v-for="item in list" :key="item.id">
    <input 
      type="checkbox" 
      v-model="selectedItems" 
      :value="item.id"
    >
    {{ item.name }}
  </div>
</template>

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

删除逻辑实现

通过数组过滤方法移除选中项:

vue批量删除实现

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

全选/反选功能

添加全选复选框提升用户体验:

<input 
  type="checkbox" 
  v-model="selectAll"
  @change="toggleSelectAll"
>
全选

对应方法实现:

vue批量删除实现

computed: {
  selectAll: {
    get() {
      return this.selectedItems.length === this.list.length
    },
    set(value) {
      this.selectedItems = value 
        ? this.list.map(item => item.id) 
        : []
    }
  }
}

后端 API 集成

实际项目中通常需要调用接口:

async batchDelete() {
  try {
    await axios.delete('/api/items', {
      data: { ids: this.selectedItems }
    })
    // 更新本地数据
    this.fetchData()
  } catch (error) {
    console.error(error)
  }
}

注意事项

  • 添加加载状态防止重复提交
  • 实现删除前的确认对话框
  • 列表为空时禁用删除按钮
  • 使用 Vuex 管理状态时需通过 mutations 修改数据

完整示例组件:

<template>
  <div>
    <button 
      @click="batchDelete"
      :disabled="!selectedItems.length"
    >
      批量删除
    </button>

    <table>
      <tr v-for="item in list" :key="item.id">
        <td>
          <input 
            type="checkbox"
            v-model="selectedItems"
            :value="item.id"
          >
        </td>
        <td>{{ item.name }}</td>
      </tr>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedItems: [],
      list: [] // 从API获取
    }
  },
  methods: {
    async batchDelete() {
      if (!confirm('确认删除选中项?')) return

      try {
        await this.$api.deleteItems(this.selectedItems)
        this.list = this.list.filter(
          item => !this.selectedItems.includes(item.id)
        )
        this.selectedItems = []
      } catch (error) {
        alert('删除失败')
      }
    }
  }
}
</script>

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

相关文章

vue 实现blog

vue 实现blog

Vue 实现博客的基本步骤 使用 Vue 实现博客可以分为前端和后端两部分,前端使用 Vue.js 框架,后端可以选择 Node.js、Python 或其他服务端语言。以下是一个基于 Vue 的博客实…

vue实现app

vue实现app

Vue 实现 App 的常见方法 使用 Vue 开发移动端 App 主要有两种主流方案:混合开发(Hybrid)和原生渲染。以下是具体实现方式和工具链: 混合开发方案(WebView 嵌入) 通过…

vue 实现关闭

vue 实现关闭

Vue 实现关闭功能的方法 在Vue中实现关闭功能通常涉及组件销毁、模态框隐藏或路由跳转等场景。以下是几种常见实现方式: 销毁当前组件 使用v-if或v-show控制组件显示/隐藏,适用于局部组件:…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…

vue 实现脚本

vue 实现脚本

Vue 实现脚本的方法 Vue.js 提供了多种方式来实现脚本功能,包括组件内脚本、混入(Mixins)、插件(Plugins)以及自定义指令等。以下是常见的实现方式: 组件内脚本 在 Vue 单文…