data属性:
a: {},
b: [],
在created的时候从服务器获取数据,需要填充到a和b中,因为数据需要过滤所以不能直接赋值,
for(let key in response.data.list){
if(response.data.list[key].type == 2){
this.a[key] = response.data.list[key]
}
}
修改a的值时,视图不会刷新。
看了文档说是因为a的属性中没有key,新增的属性要$set。
但是,对b的操作有两种结果。
这样操作:
for(let key in response.data.list){
if(response.data.list[key].type == 1){
this.b.push(response.data.list[key])
}
}
修改b的值,视图会刷新。
如果是这样:
let index = 0;
for(let key in response.data.list){
if(response.data.list[key].type == 1){
this.b[index] = response.data.list[key]
index ++
}
}
修改b的值,视图不会刷新。
为什么push的时候不需要$set?
vue会对数组的原生方法进行劫持