element-ui 表格中 如何双击可编辑当前行内容 完整代码展示
时间: 2023-10-17 14:09:08 浏览: 110
以下是一个使用 Element UI 表格组件的示例,双击表格行可以编辑当前行数据:
```html
<template>
<div>
<el-table :data="tableData" @row-dblclick="handleRowDblclick">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="gender" label="性别"></el-table-column>
</el-table>
<el-dialog title="编辑用户信息" :visible.sync="dialogVisible">
<el-form :model="currentData" ref="form" label-width="80px">
<el-form-item label="姓名">
<el-input v-model="currentData.name"></el-input>
</el-form-item>
<el-form-item label="年龄">
<el-input v-model.number="currentData.age"></el-input>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="currentData.gender">
<el-radio label="male">男</el-radio>
<el-radio label="female">女</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="saveData">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: "张三", age: 18, gender: "male" },
{ name: "李四", age: 20, gender: "female" },
{ name: "王五", age: 22, gender: "male" },
],
dialogVisible: false,
currentData: null,
};
},
methods: {
handleRowDblclick(row) {
this.currentData = Object.assign({}, row);
this.dialogVisible = true;
},
saveData() {
this.$refs.form.validate((valid) => {
if (valid) {
Object.assign(
this.tableData.find((item) => item.name === this.currentData.name),
this.currentData
);
this.dialogVisible = false;
}
});
},
},
};
</script>
```
这里的表格使用 `@row-dblclick` 监听双击事件,当双击某一行时,会触发 `handleRowDblclick` 方法。
在该方法中,我们将当前行的数据复制到 `currentData` 中,并打开一个对话框来编辑该数据。对话框中的表单使用了 `ref="form"` 来引用该表单,方便后面保存时进行表单验证。
当用户点击对话框中的确定按钮时,会触发 `saveData` 方法,该方法首先进行表单验证,验证通过后将当前行数据更新为 `currentData` 中的数据,并关闭对话框。注意这里使用了 `Object.assign` 方法来将 `currentData` 对象中的数据拷贝到对应的行数据中。
以上代码仅供参考,具体实现方式可以根据具体需求进行调整。
阅读全文