首先我们的代码数据是这样的(直接和后台对应)
ruleForm: { roadList: {vehicle: {name:"机动车",width: 0,length:0,area:0},notVehicle: {name:"非机动车",width: 0,length:0,area:0},walk: {name:"人行道",width: 0,length:0,area:0},other: {name: "其他"width: 0,length:0,area:0}}, },
html 代码处理
<template v-for="(item, key, index) in ruleForm.roadList"><tr><th>施工长度<p class="unit">({{item.name}})</p></th><td>// prop 中 roadList. 就是最上面绑定的数据 fuleForm.roadList key 就是对应的roadList中具体某个对象, .length就对象中的具体字段<el-form-item :prop="'roadList.' + key + '.length'" :rules="{ required: true, message: '请输入施工长度', trigger: 'blur' }"> // 其中rules校验,如果是绑定到el-form 标签上需要定义名字,而这个是动态类型的直接写的标签上更方便<div class="flex"><el-input placeholder="请输入施工长度" type="number" v-model.number="item.length" clearable :disabled="disabled" @input="changeArea(arguments,item)" autocomplete="off"></el-input><span class="unit">米</span></div></el-form-item></td> </tr></template>
换个思路如果前端页面遇到需要展示的内容是可以循环展示的,但是后台的数据不是数组形式的,我们就可以用这样的方式灵活处理