使用vue实现批量删除
实现思路
在Vue中实现批量删除功能通常需要以下核心步骤:通过复选框选择多条数据,点击删除按钮时获取已选数据的ID数组,调用API进行批量删除,并更新前端数据列表。
前端代码示例
模板部分
使用v-model绑定复选框,v-for渲染数据列表,并添加批量删除按钮:
<template>
<div>
<table>
<thead>
<tr>
<th><input type="checkbox" v-model="selectAll" @change="toggleSelectAll"></th>
<th>ID</th>
<th>名称</th>
</tr>
</thead>
<tbody>
<tr v-for="item in list" :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>
<button @click="batchDelete" :disabled="selectedItems.length === 0">批量删除</button>
</div>
</template>
脚本部分
定义数据、选择逻辑和删除方法:
<script>
export default {
data() {
return {
list: [
{ id: 1, name: '项目1' },
{ id: 2, name: '项目2' },
{ id: 3, name: '项目3' }
],
selectedItems: [],
selectAll: false
}
},
methods: {
toggleSelectAll() {
this.selectedItems = this.selectAll ? this.list.map(item => item.id) : [];
},
async batchDelete() {
if (this.selectedItems.length === 0) return;
try {
// 调用API示例(需替换为实际接口)
await this.$http.post('/api/batch-delete', { ids: this.selectedItems });
// 更新本地数据
this.list = this.list.filter(item => !this.selectedItems.includes(item.id));
this.selectedItems = [];
this.selectAll = false;
alert('删除成功');
} catch (error) {
console.error('删除失败:', error);
}
}
}
}
</script>
关键点说明
复选框联动
通过selectAll变量控制全选状态,toggleSelectAll方法实现全选/取消全选逻辑。

API调用
实际项目中需替换$http.post为真实的API请求(如Axios),传递选中的ID数组。
数据更新
删除成功后通过filter过滤已删除项,保持前端数据同步。

样式优化建议
添加CSS增强用户体验:
button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
扩展功能
-
删除确认弹窗
在batchDelete方法中添加confirm确认提示:if (!confirm('确定要删除选中项吗?')) return; -
加载状态
添加loading变量防止重复提交:data() { return { loading: false } }, methods: { async batchDelete() { if (this.loading) return; this.loading = true; // ...API调用 this.loading = false; } }






