前言
关于这个问题, 官网上说的很清楚官方文档
写个例子
为什么
因为 vue 实现双向数据绑定的机制是数据劫持, 也就是在所有对象上有个 Object.defineProperty() 方法, 通过监听 set,get 方法去实现, 而数组没有这两个方法, 所以就不会更新 view; 解决方案就是, 需要我们主动通知 vue;
解决方案 1
- methods:{
- change(){
- this.aas[3] = 444;
- // 在 vm 实例上通知
- vm.$set(this.aas,3,this.aas[3])
- }
- }
解决方案 2
- methods:{
- change(){
- this.aas[3] = 444;
- // 在全局对象上通知
- Vue.set(this.aas,3,this.aas[3])
- }
- }
解决方案 3
- methods:{
- change(){
- // vue 本身可以监听到数组的一些方法, 例如:
- // push(),pop(),shift(),unshift(),splice(),sort(),reverse()
- this.aas.splice(3,1,"444");
- }
- }
来源: http://blog.csdn.net/wxl1555/article/details/79616752