vue+iview 外部按钮删除Table表格通过复选框选中的某一行数据
时间: 2023-12-17 19:05:16 浏览: 102
您可以通过以下步骤实现vue+iview外部按钮删除Table表格通过复选框选中的某一行数据:
1. 在table组件中添加selection-change事件处理函数,用于监听选中数据的变化。
```html
<template>
<Table :data="tableData" @selection-change="handleSelectionChange">
<TableColumn type="selection" :selectable="selectable"></TableColumn>
<TableColumn label="姓名" prop="name"></TableColumn>
<TableColumn label="年龄" prop="age"></TableColumn>
<TableColumn label="性别" prop="gender"></TableColumn>
</Table>
<Button type="primary" @click="handleDelete">删除选中项</Button>
</template>
```
2. 在methods中定义handleSelectionChange方法,用于保存当前选中的数据。
```javascript
methods: {
handleSelectionChange(selectedItems) {
this.selectedItems = selectedItems;
},
handleDelete() {
// 删除选中的数据
this.selectedItems.forEach(item => {
const index = this.tableData.indexOf(item);
this.tableData.splice(index, 1);
});
// 取消选中状态
this.$refs.table.clearSelection();
}
}
```
3. 在handleDelete方法中实现删除选中的数据,并调用$refs.table.clearSelection()方法取消选中状态。
完整代码如下:
```html
<template>
<Table :data="tableData" @selection-change="handleSelectionChange" ref="table">
<TableColumn type="selection" :selectable="selectable"></TableColumn>
<TableColumn label="姓名" prop="name"></TableColumn>
<TableColumn label="年龄" prop="age"></TableColumn>
<TableColumn label="性别" prop="gender"></TableColumn>
</Table>
<Button type="primary" @click="handleDelete">删除选中项</Button>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: 18, gender: '男' },
{ name: '李四', age: 20, gender: '女' },
{ name: '王五', age: 22, gender: '男' }
],
selectedItems: []
};
},
methods: {
handleSelectionChange(selectedItems) {
this.selectedItems = selectedItems;
},
handleDelete() {
// 删除选中的数据
this.selectedItems.forEach(item => {
const index = this.tableData.indexOf(item);
this.tableData.splice(index, 1);
});
// 取消选中状态
this.$refs.table.clearSelection();
}
}
};
</script>
```
其中,需要注意的是在TableColumn中添加了type="selection"属性,用于实现复选框选择功能。同时,还需要定义selectable方法,用于控制某些行是否可选。
```javascript
selectable(row, index) {
// 第一行不可选
return index !== 0;
}
```
阅读全文