vue 中 [__ob__: Observer]问题

3,185 阅读1分钟

背景

请求后台接口,把返回值作为一个ListData的key和value。 因为返回key是动态的,所以声明ListData时默认为{}

问题

以前都是知道ListData的key,所以直接赋值,vue可以响应变化。 现在不知道key,新写入key就导致vue没法响应变化。

发现

发现这个问题前,我排查了很久,一直不明白哪里出了问题,因为直接打印ListData可以看到key值,但是通过属性访问就是undefined。

后来看到那个对象有个[__ob__:Observer]属性,是正常对象没有的,就百度了一下,发现这个是vue这个框架对数据设置的监控器,一般都是不可枚举的。

此时,我就反应过来了,知道问题出在我没有使用vm.$set方法给对象赋值,这样就可以访问属性了

补充

在百度的过程中发现别的博客说[__ob__:Observer]是可通过JSON去处理拿到数据 JSON.parse(JSON.stringify(data))