在写表格的时候,可能会遇到这样的需要表格嵌套表单,使表格中的数据都要进行校验。如下图
上面来实现这种成果
- 首先咱们要先创立一个表单并且在表单里创立一个表格。
<el-form label-width="auto"> <el-table tooltip-effect="dark" size="small" > <el-table-column label="名称"> </el-table-column> <el-table-column label="性别"> </el-table-column> <el-table-column label="年龄"> </el-table-column> </el-table> </el-form> <el-button>点击校验</el-button>
2.增加表格和表格的元数据
首先在data中增加表格的元数据与表单校验。
data() { return { formData: { inforData: [ { name: '', sex: '男', age: '' }, { name: '', sex: '男', age: '' }, { name: '', sex: '男', age: '' }, { name: '', sex: '男', age: '' } ], inforRules: { name: [{ required: true, message: '请输出姓名' }], sex: [{ required: true, message: '请输出性别' }], age: [{ required: true, message: '请输出年龄' }] } } } }, methods: { //点击校验 rules() { this.$refs.formData.validate(valid=> { if(valid) { console.log(true) }else { console.log(false) } }) } }
而后在模板中写入表格与表单的元数据与校验的格局
<el-form :model="formData" ref="formData" label-width="auto"> <el-table :data="formData.inforData" tooltip-effect="dark" size="small" > <el-table-column label="名称"> <template slot-scope="scope"> <el-form-item :prop="'inforData.'+scope.$index+'.name'" :rules="formData.inforRules.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-form-item :prop="'inforData.'+scope.$index+'.sex'" :rules="formData.inforRules.sex" > <el-input v-model="scope.row.sex"></el-input> </el-form-item> </template> </el-table-column> <el-table-column label="年龄"> <template slot-scope="scope"> <el-form-item :prop="'inforData.'+scope.$index+'.age'" :rules="formData.inforRules.age" > <el-input v-model="scope.row.age"></el-input> </el-form-item> </template> </el-table-column> </el-table> </el-form> <el-button @click="rules">点击校验</el-button>
如果本篇文章帮到了你,欢送点赞评论 + 珍藏。