记一次Vue v-for input 值重复的问题

Vue v-for input 值重复的问题

再做一次动态添加输入框是,修改一个input,其他的input同步重复值。
在这里插入图片描述
代码:

// 伪代码
var obj = {
    list: [],
	tem: {
		field: '',
		model: 'eq',
		value: '',
	},
	add: function() {
	    this.list.push(this.tem)
	}
}

obj.add()
obj.tem.field = 1
console.log(obj.tem)
console.log(obj.list)
console.log(obj)

// 结果
{ field: 1, model: 'eq', value: '' }
[ { field: 1, model: 'eq', value: '' } ]

先向对象list数组中添加一个tmp元素,在修改tmp其中的元素,list中的元素也跟着变化了,打印对象发现,list中添加元素的对象和tmp是一样的,因此会随着tmp变化而变化。(再深入则不得而知)
在这里插入图片描述

解决办法

从根本上解决,就是向list中添加同样结构的不同对象

// 伪代码
var obj = {
    list: [],
	tem: {
		field: '',
		model: 'eq',
		value: '',
	},
	add: function() {
		// 关键步骤构建一个新的对象添加入数组中,也可以clone一个新对象
		var arr = JSON.parse(JSON.stringify(this.tem)) 
	    this.list.push(arr)
	}
}
obj.add()
obj.tem.field = 1
console.log(obj.tem)
console.log(obj.list)
// 结果
// { field: 1, model: 'eq', value: '' }
// [ { field: '', model: 'eq', value: '' } ]
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值