el-form表单对象内还嵌套对象,绑定的prop规则校验会失效

继续踩坑~。因为受限于后端返回的数据格式,整个表单是个对象,但是里面还会嵌套对象。
而我们在绑定字段时,自然而然是去绑定最里层的字段。

在这里插入图片描述
el-form的model是去绑定大的表单对象。
而我这里的表单项则是绑定final_transfer.acc_profit_name。但我这里prop写的是acc_profit_name。对应规则里面的prop。
在这里插入图片描述
在这里插入图片描述

按官方文档的,如果表单对象不涉及嵌套,这样绑定是没问题的。但如果涉及到了嵌套。我们这里这样绑定prop,即使表单的值改变了,校验也还是会存在。
在这里插入图片描述

解决办法:

prop和rules的值修改如下。
在这里插入图片描述
在这里插入图片描述

源码的匹配逻辑大家可以去看看,这里简单讲一下就是。你在el-form-item填写的prop是这里 prop对象的k值。
o对象是需要校验的表单字段
prop.o[this.prop || ’ '] 这里就会根据el-form-item的prop去取值rules里要校验的字段
在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
el-form 表单组件可以使用 `rules` 属性来添加校验规则,具体步骤如下: 1. 在表单控件上添加 `prop` 属性,该属性的值对应表单数据对象中的属性。 2. 在 el-form 上添加 `rules` 属性,该属性的值是一个对象对象的 key 是对应表单控件的 prop 值,value 是一个数组,数组中包含校验规则。 3. 在表单控件上添加 `v-model` 属性,该属性的值对应表单数据对象中的属性。 例如,在一个登录表单中,需要对用户名和密码进行校验,可以这样写: ```html <template> <el-form :model="loginForm" :rules="loginRules"> <el-form-item label="用户名" prop="username"> <el-input v-model="loginForm.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="loginForm.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">登录</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { loginForm: { username: '', password: '', }, loginRules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }, ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }, ], }, }; }, methods: { submitForm() { this.$refs.loginForm.validate((valid) => { if (valid) { // 表单校验通过,可以提交表单 console.log(this.loginForm); } else { // 表单校验未通过,不可以提交表单 return false; } }); }, }, }; </script> ``` 在这个例子中,我们使用了两个 el-form-item 组件来包含用户名和密码的输入框,分别对应 loginForm 对象的 username 和 password 属性。在 el-form 上设置了 loginRules 对象来指定校验规则,其中 username 和 password 分别指定了两个校验规则。在 submitForm 方法中,我们使用了 `$refs` 来获取表单组件,并调用了 validate 方法来进行表单校验。`validate` 方法的回调函数中,如果校验通过,则返回 `true`,否则返回 `false`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值