vue elementUI 表单校验(数组多层嵌套)
在使用vue element-ui form表单渲染的时候,会遇到这样的数据结构:
{
"title":''123455,
"email":'123456@qq.com',
"list": [
{
"id": "quis consequat culpa ut pariatur",
"name": "et quis irure dolore ullamco",
"ompany": "sunt mollit",
"address": "anim reprehenderit aliquip labore velit"
},
{
"id": "",
"name": "laborum magna",
"company": "mollit esse ipsum quis",
"address": "cillum dolore ex ut"
},
]
}
在遇到某个字段值比如list是个数组,下面多个字段值还需要继续使用rules校验时候,直接给list下面的字段绑定prop="对应的字段值",是不能校验成功的,解决办法有二:
1、在是数组的地方再套一个
给list数组下的字段直接还是绑定prop名称为原本的名称就可以;
示例代码如下:
<el-form :model="item" v-for="(item,index) in dataFields.list :key="index">
<el-form-item label="name" prop="name" :rules="{ required: true, message: 'Required', trigger: 'blur' }">
<el-input placeholder="name" v-model="item.name"></el-input>
</el-form-item>
</el-form>
2、直接给list数组下对象的字段名称绑定为 数组下的名称
示例代码如下:
<div v-for="(item,index) in dataFields.list :key="index">
<el-form-item label="name" :prop="`list[${index}].name`" :rules="{ required: true, message: 'Required', trigger: 'blur' }">
<el-input placeholder="name" v-model="item.name"></el-input>
</el-form-item>
</div>
这里list即为上面对象中的数组,datafields是最外层对象。