在 Vue 和 Element UI 中,实现表格的增删改可以通过以下步骤完成:
- 在 Vue 组件中定义表格数据,例如:
xmlCopy
<template>
<el-table :data="tableData">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
<el-table-column label="操作">
<template #default="{row}">
<el-button @click="editRow(row)">编辑</el-button>
<el-button type="danger" @click="deleteRow(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: 20, address: '北京市' },
{ name: '李四', age: 25, address: '上海市' },
{ name: '王五', age: 30, address: '广州市' }
],
editForm: {
name: '',
age: '',
address: ''
},
editIndex: -1
}
},
methods: {
editRow(row, index) {
this.editForm = { ...row }
this.editIndex = index
},
saveRow() {
if (this.editIndex === -1) {
// 新增
this.tableData.push(this.editForm)
} else {
// 修改
this.tableData.splice(this.editIndex, 1, this.editForm)
}
this.cancelEdit()
},
deleteRow(row) {
const index = this.tableData.indexOf(row)
if (index !== -1) {
this.tableData.splice(index, 1)
}
},
cancelEdit() {
this.editForm = {
name: '',
age: '',
address: ''
}
this.editIndex = -1
}
}
}
</script>
- 在表格中添加操作列,并在操作列中添加编辑和删除按钮。
- 定义编辑和删除方法,在方法中修改表格数据。
- 在编辑方法中,将当前行的数据复制到一个编辑表单对象中,并记录当前行的索引。
- 在编辑表单中,使用
v-model
指令绑定表单数据,并使用v-if
指令判断当前是否处于编辑状态。 - 在编辑表单中,添加保存和取消按钮,分别调用保存和取消编辑方法。
- 在保存方法中,根据当前行的索引判断是新增还是修改操作,并将编辑表单的数据更新到表格数据中。
- 在取消编辑方法中,重置编辑表单的数据和当前行的索引。
需要注意的是,在编辑表单中,可以使用 :rules
属性绑定校验规则,例如:vimCopy
<el-form-item label="姓名" prop="name">
<el-input v-model="editForm.name"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input v-model.number="editForm.age"></el-input>
</el-form-item>
<el-form-item label="地址" prop="address">
<el-input v-model="editForm.address"></el-input>
</el-form-item>
在上面的示例中,我们使用了 el-table
组件渲染表格数据,并使用了 el-table-column
组件渲染表格列。在表格列中,我们使用了 v-for
指令动态生成表格列。在表格列中的操作列中,我们使用了 v-if
指令判断当前是否处于编辑状态,并添加了保存和取消按钮。在组件的 data
选项中,我们定义了表格数据、编辑表单数据和当前编辑行的索引。在组件的 methods
中,我们定义了 editRow
、saveRow
、deleteRow
和 cancelEdit
四个方法,用于实现编辑、保存、删除和取消编辑操作。在编辑表单中,我们使用了 v-model
指令绑定表单数据,使用了 v-if
指令判断当前是否处于编辑状态,并添加了保存和取消按钮。在需要校验的表单项中,可以使用 :rules
属性绑定校验规则。
需要注意的是,以上示例中的编辑和删除操作是基于表格数据的索引进行操作的,如果需要根据其他唯一标识进行操作,需要在表格数据中添加该标识,并在编辑和删除方法中根据该标识进行操作。同时,在编辑方法中需要将编辑表单的数据复制到一个新的对象中,以避免直接修改原始数据。