elementui tableform
ElementUI Table 与 Form 结合使用
ElementUI 提供了强大的 Table 和 Form 组件,结合使用时可以实现表格内编辑、表单验证等功能。以下是常见的使用场景和方法:
表格内嵌表单编辑
在表格中嵌入表单元素,实现行内编辑功能:

<el-table :data="tableData">
<el-table-column prop="name" label="姓名">
<template slot-scope="scope">
<el-form :model="scope.row" :rules="rules">
<el-form-item prop="name">
<el-input v-model="scope.row.name"></el-input>
</el-form-item>
</el-form>
</template>
</el-table-column>
<!-- 其他列 -->
</el-table>
表单验证与表格数据提交
为表格中的表单添加验证规则,并在提交时验证所有行:

data() {
return {
rules: {
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
]
},
tableData: [
{ name: '', age: '' }
]
}
},
methods: {
submitForm() {
let valid = true
this.$refs.tableForm.validate(valid => {
if (!valid) {
valid = false
}
})
return valid
}
}
动态增减表格行
结合表单实现动态增减表格行的功能:
<el-form :model="form">
<el-table :data="form.items">
<el-table-column prop="name" label="项目名称">
<template slot-scope="scope">
<el-form-item :prop="'items.' + scope.$index + '.name'">
<el-input v-model="scope.row.name"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button @click="removeItem(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-button @click="addItem">添加项目</el-button>
</el-form>
methods: {
addItem() {
this.form.items.push({ name: '' })
},
removeItem(index) {
this.form.items.splice(index, 1)
}
}
表格与表单联动验证
实现表格与外部表单的联动验证:
<el-form ref="mainForm" :model="formData">
<el-form-item prop="tableData" :rules="tableRules">
<el-table :data="formData.tableData">
<!-- 表格列定义 -->
</el-table>
</el-form-item>
</el-form>
data() {
const validateTable = (rule, value, callback) => {
if (value.length === 0) {
callback(new Error('至少需要一项数据'))
} else {
callback()
}
}
return {
tableRules: [
{ validator: validateTable, trigger: 'blur' }
]
}
}
注意事项
- 表格内嵌表单时,注意作用域问题,确保每个表单绑定正确的数据对象
- 动态增减行时,表单验证规则需要动态更新
- 大量数据时考虑性能问题,可配合分页或虚拟滚动使用
- 复杂验证场景可考虑使用自定义验证方法
通过以上方法可以灵活结合 ElementUI 的 Table 和 Form 组件,实现各种数据编辑和验证需求。






