在 Element UI 的 el-table
组件中,可以使用 el-form
和 el-table
组合来实现动态添加行,其中 el-form
用于包裹整个表单,而 el-table
用于渲染表格数据。下面是一个示例:xmlCopy
<template>
<el-form ref="form" :model="formData" label-width="80px">
<el-table :data="tableData" style="margin-top: 20px;">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column label="操作">
<template #default="{row}">
<el-button type="danger" @click="deleteRow(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div style="margin-top: 20px;">
<el-button type="primary" @click="addRow">新增</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</el-form>
</template>
<script>
export default {
data() {
return {
formData: {
name: '',
age: null
},
tableData: []
}
},
methods: {
addRow() {
this.tableData.push({
name: '',
age: null
})
},
deleteRow(row) {
const index = this.tableData.indexOf(row)
if (index !== -1) {
this.tableData.splice(index, 1)
}
},
submitForm() {
this.$refs.form.validate((valid) => {
if (valid) {
console.log(this.tableData)
// 可以在此处发送表单数据到后端进行处理
} else {
console.log('表单验证失败')
return false
}
})
}
}
}
</script>
在上面的示例中,我们使用了 el-form
和 el-table
组合来实现动态添加行的功能。在表单中,我们使用了 v-model
指令将表单数据和输入框进行双向绑定,使用了 el-button
组件添加了“新增”和“提交”按钮。在表格中,我们使用了 el-table-column
组件渲染表格列,并使用了插槽来渲染“操作”列。
在组件的 data
选项中,我们定义了表单数据和表格数据。在组件的 methods
中,我们定义了 addRow
、deleteRow
和 submitForm
三个方法。其中,addRow
方法用于添加一行表格数据,deleteRow
方法用于删除指定行的表格数据,submitForm
方法用于提交表单数据。在 submitForm
方法中,我们使用 el-form
组件的 validate
方法进行表单验证,如果验证通过,则可以将表格数据发送到后端进行处理,例如使用 Axios 库发送 POST 请求。
需要注意的是,在动态添加行的过程中,需要将表格数据定义为响应式对象,以便在添加/删除行后自动更新表格的显示。此外,由于 el-form
组件的验证是基于数据模型进行的,因此需要在表单数据对象中为每个输入框定义一个初始值。