vue+elementui表单数组对象深层嵌套之自定义验证规则

项目场景:

在Vue+Elementui项目中,需要在表单的循环数组中,对某一深层嵌套的对象属性制定自定义校验规则。


问题描述

        现有一深层嵌套的数组list,需要对数组对象中的默认值state进行大小值校验以及空值判断。而大小值也需要做校验,即最小值不得大于最大值且数值不能为空。

难点1:不知如何给循环数组中深层嵌套的对象属性(如min、max)绑定自定义校验规则。

难点2:不知如何在自定义校验规则中拿到对象索引值index。

export default{
    data(){
        return{
            form:{
                a:'xxx',
                list:[
                    {
                        adjust:{
                            isAdjust: false,
                            min: null,
                            max: null,
                        },
                        state: null,
                    }
                ]
            }
        }
    }

}

解决方案:

针对难点1:在prop中用`[数组].${index}.[对象属性]`的方式和需要校验的属性进行绑定;prop中的对象属性需要和待校验属性名称保持一致。如 :prop="`list.${index}.adjust.min`"需要和带校验属性 v-model="item.adjust.min"中的adjust.min保持一致。

针对难点2:直接在待校验表单元素中给定校验规则,并在校验规则中赋值index:index,从而获取索引。如:rules="{ required:true, validator: validateMin, trigger: 'blur', index:index }"

代码如下:


你可能感兴趣的:(vue.js,elementui)