关于element表单动态添加表单项,无法修改的问题

场景:

在开发过程从,有时会用到表单,表单会绑定一个对象,对应这表单项的内容,如果某个表单项是动态生成的,并且附有默认值时,会出现不能修改的现象

示例:

在这里插入图片描述
如上图,表单我绑定了model为`creamForm: { name: ‘’, code: ‘’ },分别对应着编号和名称,但是列表是根据数据动态渲染的,所以初始化中的creamFrom中无法去默认定义键值对,只有在获取数据后,去遍历列表,再给creamForm赋予对应的键值对,如下:

list.map((item, i) => {
	this.creatForm['type' + (i+1)] = item.type
	this.creatForm['content' + (i+1)] = item.content
	this.creatForm['rate' + (i+1)] = item.rate
})

通过这种方法去绑定对应的表单值,但是会出现一个问题,动态渲染的值无法修改,原因是在vue中,对象新增的key无法双向绑定

解决方案:

当数据没有被双向绑定时,可以使用this.$set()来解决
语法:this.$set(原数组/对象,索引/key,修改的值)
所以上面的代码可以改成下面这种方式:

list.map((item, i) => {
	this.$set(this.creatFrom, 'type'+(i+1), item,type)
	this.$set(this.creatFrom, 'content'+(i+1), item,content)
	this.$set(this.creatFrom, 'rate'+(i+1), item,rate)
})

这样就可以修改遍历渲染后的表单项的内容了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值