强制更新视图
页面通过v-for循环渲染了一些东西,如果其中的属性变化,vue不会更新视图,需要强制更新视图
修改一个数组其中的一个值,或者添加一条数据时,不管用,例如:vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如:vm.items.length = newLength
方法一:Vue.set() 方法(this.$set())
Vue.set( target, key, value ) 中有三个参数 target:要更改的数据源(可以是对象或者数组) key:要更改的具体数据 如果是数组 就是索引值 value :重新赋的值
js
this.$set(this.student,"age", 24);
this.$set(this.tenMinutesAlarmData[index],"disabled",true)1
2
2
方法二:$forceUpdate
对于深层的,最好用set方法,这样vue就可以知道发生了变化,同时vue也不建议直接修改length,可以给一个空数组来置空。用 forceUpdate 了,因为你修改了数据,但是页面层没有变动,说明数据本身是被修改了,但是vue没有监听到而已,用$forceUpdate就相当于按照最新数据给渲染一下。
js
change: function(index) {
this.list[index].sex = '男';
this.$forceUpdate();
},
clear: function() {
this.list.length = 0;
this.$forceUpdate();
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8