elementUI rule验证无效 不起作用

因为项目中遇到复杂的form表单传输 具体最终提交格式如下

// 表单
            formInfo: {
                // 基础信息
                baseInfo:{
                    platOrderNo: "",
                    orderType: "",
                    shopId: "1",
                    tradeTimeStr: "",
                    wareId: "",
                    payType: "",
                },
                // 物流信息
                deliveryInfo:{
                    deliveryWareId:"",
                    deliveryTimeStr: "",
                    expressCompanyId: "",
                    expressNo: "",
                    areaCode: "",
                    receiverAddress: "",
                },
                //开票信息相关
                invoiceFlag: "",
                invoiceInfo:{
                    invoiceType: "",
                    takerPhone: "",
                    takerEmail: ""
                }
            },

发现所有表单验证不起作用了

以orderType为例

 //页面                                  
                                   <el-form-item label="订单类型:" prop="orderType">
                                       <el-select
                                            v-model="formInfo.baseInfo.orderType"
                                            placeholder="订单类型"
                                        >
                                            <el-option
                                                v-for="item in orderTypeData"
                                                :key="item.id"
                                                :label="item.name"
                                                :value="item.code"
                                            ></el-option>
                                        </el-select>
                                    </el-form-item>
    //js
            rules: {
               
                orderType: [
                    {
                        required: true,
                        message: "请选择",
                        trigger: "change"
                    }
                ],
            }

prop和rules里的校验名称是一样的 不管如何选值 就是一直校验不通过 报错

重点来了,解决方法

 //页面                                  
                                   <el-form-item label="订单类型:" prop="baseInfo.orderType">
                                       <el-select
                                            v-model="formInfo.baseInfo.orderType"
                                            placeholder="订单类型"
                                        >
                                            <el-option
                                                v-for="item in orderTypeData"
                                                :key="item.id"
                                                :label="item.name"
                                                :value="item.code"
                                            ></el-option>
                                        </el-select>
                                    </el-form-item>
    //js
            rules: {
               
                [`baseInfo.orderType`]: [
                    {
                        required: true,
                        message: "请选择",
                        trigger: "change"
                    }
                ],
            }

prop="baseInfo.orderType"换成这个

rules 校验名称换成这个 [`baseInfo.orderType`]

原因是因为rules针对的是:model="formInfo" model绑定的那个数据 model.orderType 当然找不到 所有需要加上你套的数据格式这样就好了

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值