解决数据没有被双向绑定我们可以使用 vm.$set 实例方法,该方法是全局方法 Vue.set 的一个别名。
- this.$set(原数组, 索引值, 需要赋的值)
总结了一下,只要值的地址没有改变,vue是检测不到数据变化的。
例如
let array=[{a:1,b:2},{a:1,b:2},{a:1,b:2}]
let arrayItem = array[2]
arrayItem.a=2
arrayItem.b=1
this.$set(array,2,arrayItem)
//这样修改是不会生效的。因为子元素的是对象,只改了对象中的某一个值,对象的地址没有。所以不会更新
可以在
let arrayItem = array[2]
采用
let arrayItem = {... array[2] }结构赋值(相当于克隆了一份,会创建新的一份数据,或者其他克隆方式也可以)
网友评论