over_msg是本地一个数组,return_msg是axios请求回来的数据
如果是this.datalist[j]=res.data,这样数据改变,但是视图未改变,百度后发现vue.set方法
if (over_msg.indexOf(return_msg) > -1) {
// console.log('已存在')
// console.log(this.datalist)
// 已经存在的话,遍历原来的,替换
for (var j = 0; j < this.datalist.length; j++) {
// console.log(this.datalist[j])
if (this.datalist[j].carId == res.data.carId) {
this.datalist[j] = res.data
this.$set(this.datalist, this.datalist[j], res.data)
}
}
}
根本原因:
Vue 不允许在已经创建的实例上动态添加新的根级响应式属性。
然而它可以使用 Vue.set(object, key, value)
方法将响应属性添加到嵌套的对象上
vue.set方法官方文档:
http://doc.vue-js.com/v2/api/#Vue-set
其中涉及到深入响应式原理: