vue2中,若没有在一开始定义变量,页面初始化后,在表单中写入没有定义的变量时,会出现数据与变量不同步,也就是在表单写内容,无法与v-model绑定,因为vue2在实例化加载数据时,已经将data中的值使用object.defineproperty
遍历了一次,当下次使用新属性时,并没有转化为get,set使用defineproperty所劫持,所以当这个属性变化时,并不会触发视图变更。
解决此类问题一般有两种方法,一个在data中将数据定义好,另一个使用this.$set(object,propertyname,value)
但若对象太深,并且对象太多使用this.$set显然比较繁琐,这时可以使用Obect.assign(被覆盖对象,覆盖对象),赋值给原先的data,改变原data,以触发defineproperty再次运行,并生成get,set,以达到数据劫持的目的。







网友评论