vue2 赋值给data中一个对象,该对象部分属性始终为undefined不变?
console.log('1',_.merge({}, this.model, val)) this.model = _.merge({}, this.model, val);
console.log('2',this.model)
赋值前输出还是正常的
{"passengerName": "张三",
"passengerName2": "李四"
}
赋值后,输出this.model,部分属性(关联el-form的属性)就变成undefined了,就像赋值后自动被改变/部分属性赋值无效
{"passengerName": undefined,
"passengerName2": "李四"
}
model是关联在el-form上的,以及有v-model双向绑定,不知道是哪个的关系
回答:
排查了一个小时,刚才终于找到导致问题的地方了(但是还是不知道为什么)
原因是我在created里用$set设置了。但是我明明根据console.log来看,created的调用是在watch这里之后的。(突然懂了!!!,log出的this.model并没有固定,getter setter的原因,我在点击(...)时,出现的是点击(...)那一时刻的值,并不是log时的值。vue3的proxy也有这个问题,log出的值只有点(...)后才会固定下来)
watch: { xx:{handler(){
console.log('1',_.merge({}, this.model, val))
this.model = _.merge({}, this.model, val);
console.log('2',this.model)
created() { this.$set(this.model, xxx, xxx);
}
我以前试图解决过这个问题,找到个devtool选项让(...)的值自动显示出来,但是目前并没有这种选项。一种替代方案是用JSON.stringify(this.model)。但是要多写几个单词,有点麻烦,这次被这个问题坑了。。。
最近发现右键点在输出的对象上copy object可以起到类似JSON.stringify的作用,比一个个点(...)方便
以上是 vue2 赋值给data中一个对象,该对象部分属性始终为undefined不变? 的全部内容, 来源链接: utcz.com/p/934981.html