element plus表格嵌套表单校验绑定prop的问题

本文围绕Vue3 element - plus表单嵌套表格实现动态表单验证展开。主要探讨了表单校验prop绑定问题,如给el - form - item绑定prop时不同写法的差异,分析了访问数组元素方法在实际应用中的问题,最终明确prop应绑定特殊索引,还指出tableData实际是对象数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:Vue3 element-plus表单嵌套表格实现动态表单验证_何极光的博客-CSDN博客

也不能说表格里嵌套表单吧…虽然页面形式是表格里嵌套的表单,但其实数据结构还是表格数据tableData在表单数据form里

const form = reactive({tableData:[{}]})

说回表单校验prop的问题,

看了一下参考文章的大致思路就兴冲冲自己去写了,结果。。

给el-form-item绑定prop必须这么写

:prop="`tableData.${$index}.type`"

而不能这么写

:prop="tableData[$index].type"

会报tableData未定义的错误。为什么呢?同样是访问数组中的元素的方法呀?

可以页面打印一下tableData,发现它的类型typeof一下并不是数组,而是对象。

也不能使用 :prop="form.tableData[$index].type" 去访问,语法是正确的(eslint不报错),但实际上访问不到,即表格第一行绑定的不是第一行,第二行绑定的不是第二行,不清楚它绑定的啥,但可以确定的是,它绑定的是一个固定的值,不能根据index变化

我明白了:

探索过程是在页面上打印一下:

使用tableData.${$index}.type访问:

使用form.tableData[$index].type访问:

非常直观。

第一种访问方式和第二种访问方式的目标在根本上是不同的

第一种访问方式访问的是索引/字段名,

第二种访问方式访问的是值,

(键值对)

prop绑定的应该是那个特殊的索引啊!我完全明白了。

这样做的前提是,可以这么访问,毕竟,tableData.${$index}.type也太奇怪了吧!数组.0.type?好奇怪啊

好在它不是数组,而是对象——为什么它是对象?

其实它不是对象,即使你用typeof去判断类型返回了object。

事实上,它是一个对象数组 Object[]

它是一个包含对象的数组,并且每个对象中都有type这个属性,所以可以使用这种语法tableData.${$index}.type

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值