有两种情况变动的数组,是VUE不能检测到的,也不会触发视图的更新。
- 通过索引直接设置项
- 修改数组的长度
Document 数组更新
- { {item.name}}
这里,我想说的是第30行,注释那行,我正在验证数组变异的方法,所以30行和31行同时写上的,居然可以利用数组索引直接设置项,然后我就why?教程里说好的不能这样做的。。。
后面注释了第31行,才没有设置成功的。这里,使用push()方法,改变数组也会触发视图更新,所以才导致了this.items[0] = {name: '改变数组第一个值'}这么做也能成功。
以上,说明了我自己挖的这个坑的原因,那么,该怎么解决vue不能检测到通过索引直接设置项的问题呢,如下:
第一种方法:
btnClick() { this.$set(this.items, 0, { name: '通过this.$set去改变值' }}
第二种方法:
btnClick() { this.items.splice(0, 1, { name: '通过splice去改变值' }}
第三种方法:
btnClick() { this.items[0].name = '改变数组第一个值'}
那么,文章开头说的vue不能检测到修改数组长度,办法呢是用第二种中的splice()来解决。