ElementUI 中使用循环生成的form表单需要动态添加校验的规则
动态表单页面,需要把规则放在el-form-item中,进行校验
代码片段
<div v-for="(allItem,index) in ruleForm.boothManagerValues" :key="index" style="display:flex;justify-content: flex-start;width: 600px;">
<el-form-item
label="落位经理:"
:prop="'boothManagerValues.'+index+'.userId'"
:rules="[ { required: true, message: '请选择落位经理', trigger: 'blur' }]"
>
<el-select
v-model="allItem.userId"
placeholder="请选择:"
style="width: 140PX"
>
<el-option
v-for="item in managerList"
:key="item.id"
:label="item.surename"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label="参展品类:"
:prop="'boothManagerValues.'+index+'.categoryId'"
:rules="[ { required: true, message: '请选择参展品类', trigger: 'blur' }]"
style="margin-left: -20px;"
>
<el-cascader
ref="cascaderArr"
v-model="allItem.categoryId"
popper-class="theder"
style="width:140PX;"
:options="CategoryList"
:props="optionProps"
@change="categoryChange(index)"
/>
</el-form-item>
<span v-if="ruleForm.boothManagerValues.length===index+1" style="display:inline-block;height: 32px;width: 32px;line-height: 32px;text-align: center;border: 1px solid #DCDFE6;border-radius: 6px;font-size: 20px; vertical-align: middle;margin-left: 10px;cursor: pointer;" @click="plus(index)">+</span>
<span v-if="ruleForm.boothManagerValues.length===index+1" style="display:inline-block;height: 32px;width: 32px;line-height: 28px;text-align: center;border: 1px solid #DCDFE6;border-radius: 6px;font-size: 30px; vertical-align: middle;margin-left: 10px;cursor: pointer;" @click="minus(index)">-</span>
</div>
:prop=“‘boothManagerValues.’+index+‘.userId’”
:prop=“‘boothManagerValues.’+index+‘.categoryId’”
字段说明:
ruleForm.boothManagerValues是v-for绑定的数组,
index是索引主要定义不同的prop
userId和categoryId就是key值
效果如下: