- 原因
因为vue实现双向数据绑定的机制是数据劫持,也就是在所有对象上有个Object.defineProperty()方法,通过监听set,get方法去实现,而数组没有这两个方法,所以就不会更新view;解决方案就是,需要我们主动通知vue;
注意:xx[1]=787; 这种就是典型的vu无法劫持的赋值方式
- 解决办法
methods:{
change(){
this.aas[3] = 444;
// 在vm实例上通知
vm.$set(this.xx,3,this.xx[3])
}
}
methods:{
change(){
this.aas[3] = 444;
// 在全局对象上通知
Vue.set(this.xx,3,this.xx[3])
}
}
3.推荐使用
methods:{
change(){
// vue本身可以监听到数组的一些方法,例如:
// push(),pop(),shift(),unshift(),splice(),sort(),reverse()
this.xx.splice(3,1,"");
}
}