当你发现你给对象加了一个属性,在控制台能打印出来,但是却没有更新到视图上时,也许这个时候就需要用到this.$set()这个方法了,简单来说this.$set的功能就是解决这个问题的啦。官方解释:向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。
作者:梅花骨朵
链接:https://www.jianshu.com/p/6f28f5abee08
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
当你使用arr.length=0的方式来更改数组,此时数组长度发生变化,但视图并没有改变。简单来说,vue2是尤大通过重写数组方法的方式来进行数组的劫持,才能做到对数组的监听。而对象新增key值,没有使用到方法(就有点像前面提到的arr.length=0),所以需要通过vue.set来更新。
用方法:this.$set( target, key, value )
🌹 target:要更改的数据源(可以是对象或者数组)
🌹 key:要更改的具体数据的索引/key
🌹 value :重新赋的值