vue新增属性问题
程序员文章站
2022-06-01 16:06:39
...
最近遇到一个奇怪的问题:描述起来也有点绕口,我总结就是:Vue创建form表单实例并且整体赋值以后,将form中没有被赋到值的几个字段拿出来单独赋值,会造成单独被拿出来的赋值字段在界面中无法点击修改,我这样奇怪赋值的原因是因为后台给我的数据是在两个对象里面,而我界面渲染的数据在一个表单form里面。
最后得出的结论:form表单在data中定义以后,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter,实例创建以后,添加新的属性在实例中,视图不更新,实例值还是会更新的。具体见如下链接:
https://www.jianshu.com/p/71b1807b1815
这个写的不错!
解决办法就是:使用vue.set方法,也是this.$set(this.obj,‘e’,0)方法
我的表单定义,表单赋值语句分别是:
form: {
title: '',
theme: '',
research_direction: '',
finish_time: '',
word_count: '',
unit: '',
address: '',
post_code: '',
achievement: '',
id: ''
},
this.form = data.subproject[0]
this.$set(this.form,'address',data.train[0].address)
form中除了address,其他字段数据来源与后台传给我的data.subproject[0],address来源于data.train[0].address,我把它们框出来了,这样看更加明了哦!
总结几种写法:
Vue.set(object, key, value)
this.$set(this.obj,‘key’, value)
this.obj = Object.assign({},this.obj,{ a: 1, e: 2 })
有问题欢迎留言交流哟(^U^)ノ~YO