如何在el-upload上传之后改变当前行的状态
时间: 2023-06-27 17:08:35 浏览: 111
在 el-upload 组件上传文件之后,可以通过以下步骤改变当前行的状态:
1. 在上传成功的回调函数中获取到当前行的数据,可以通过 `this.$refs.table.$refs.table.clearSelection()` 方法清除表格的选中状态,并通过 `row.id` 等属性获取到当前行的唯一标识符。
2. 在上传成功的回调函数中修改当前行的状态,可以通过修改当前行的数据来实现。例如,可以通过 `this.tableData.find(item => item.id === row.id)` 方法找到当前行的数据对象,然后修改其中的状态属性。
3. 在修改当前行的状态之后,可以通过 `this.$refs.table.toggleRowSelection(row)` 方法重新选中当前行,以便用户在操作完毕后仍然能够看到该行的状态。
下面是一个示例代码:
```
<template>
<div>
<el-table
ref="table"
:data="tableData"
@row-click="handleRowClick"
highlight-current-row
>
<el-table-column prop="id" label="ID"></el-table-column>
<el-table-column prop="name" label="Name"></el-table-column>
<el-table-column label="Action">
<template slot-scope="scope">
<el-upload
class="upload-demo"
:show-file-list="false"
:on-success="handleUploadSuccess(scope.row)"
>
<el-button size="small" type="primary">Upload</el-button>
</el-upload>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'John', status: 'pending' },
{ id: 2, name: 'Jane', status: 'pending' },
{ id: 3, name: 'Tom', status: 'pending' },
],
};
},
methods: {
handleRowClick(row) {
this.$refs.table.toggleRowSelection(row);
},
handleUploadSuccess(row) {
this.$refs.table.$refs.table.clearSelection();
const data = this.tableData.find((item) => item.id === row.id);
data.status = 'completed';
this.$refs.table.toggleRowSelection(row);
},
},
};
</script>
```
在上述示例代码中,我们在 el-upload 的 `on-success` 事件中调用了 `handleUploadSuccess` 方法来处理上传成功后的逻辑。在该方法中,我们首先调用了 `clearSelection` 方法来清除表格的选中状态,然后通过 `find` 方法找到了当前行的数据对象,并修改了其中的 `status` 属性。最后,我们再次调用了 `toggleRowSelection` 方法来重新选中当前行。
阅读全文