前两天遇到一个问题,一个el-form-item里面有多个el-input需要做规则校验,并且这个form表单是循环出来的。最开始想的简单,直接定义校验规则,prop赋值要校验的数据就行了,但是发现没用。下面不多说直接上解决方法。
给要循环的form对象添加:model="这里必须是对象形式的" ,先给一个el-form-item把一行数据先包裹起来给一个required,里面再来一层el-form-item包裹input框并设置prop,rules。写了个大概实现代码。
<el-form :model="test.obj">
<!-- 外层用template包裹循环-循环具体的数据 -->
<template v-for="(item,index) in test.obj.demo">
<!--在最外层套一个el-form-item 并且给一个(required)属性,很重要 -->
<el-form-item required>
<!-- 循环对象名字.${index}.要校验的属性名 -->
<el-form-item :prop="`demo.${index}.name`" :rules="rules.name">
<!-- input的双向绑定名称要和rules一致以及prop -->
<el-input v-mode="item.name"></el-input>
</el-form-item>
<el-form-item :prop="`demo.${index}.name2`" :rules="rules.name2">
<!-- input的双向绑定名称要和rules一致以及prop -->
<el-input v-mode="item.name2"></el-input>
</el-form-item>
</el-form-item>
<el-form-item :prop="`demo.${index}.age`" :rules="rules.age">
<!-- 内部只有一层就不需要嵌套 -->
<el-input v-mode="item.age"></el-input>
</el-form-item>
<template>
</el-form>
校验规则就正常写就行,我这里写的两个示范
最终页面效果