问题描述
vue项目
从接口取回的数据,数据格式如下
然后赋值给组件data中的cashData,应为交互中要用,所以给数组中的每个item添加一个变量,
,v-for循环cashData,
,渲染出来的效果如下:
,
点击门店名称,修改showProInfoFlag为false,发现页面并没有改变
但是通过控制台打印,发现数据其实已经变化了,是vue没有监听到吗?
vue项目
从接口取回的数据,数据格式如下
然后赋值给组件data中的cashData,应为交互中要用,所以给数组中的每个item添加一个变量,
,v-for循环cashData,
,渲染出来的效果如下:
,
点击门店名称,修改showProInfoFlag为false,发现页面并没有改变
但是通过控制台打印,发现数据其实已经变化了,是vue没有监听到吗?
VUE数据同步实际上是初始化的时候为每个属性重定义了get和set方法,当数据改变,vue就可以检测到,自己异步添加的属性只能通过vue.set方法添加的才会被添加上set和get方法,才能被vue捕捉到。方法上面的大佬已经提供了。
从你的截图可以看出,store_list是一个数组。Vue中对数组中的元素赋值不会触发Vue的响应式更新,要修改数组元素的值要用$set,参考下面链接:https://www.cnblogs.com/xiaol...。
vue官网文档也有相关说明:https://cn.vuejs.org/v2/guide...
希望能帮到你。
6 回答3k 阅读✓ 已解决
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
因为
Vue
无法探测普通的新增属性问题在于下面这句:
因为 你在
data
里声明了cashData
的值 所以cashData
已经是响应式的this.cashData = data
这句话vue
会递归将数据包装成响应式数据但是你这个数据之前
data
应该没有这个showProInfoFlag
值 所以这里没有监听到,通过item.showProInfoFlag
只是单纯的对象赋值总结成下面:
你一调换一下位置:
或者: