调试过程中经常遇到类似这样结构的对象
{
"__ob__": {
"dep": {
"id": 293,
"subs": {
"length": 0
}
},
"value": {
"__ob__": {
"dep": {
"id": 293,
"subs": "Object"
},
"value": {
"__ob__": "Object"
},
"vmCount": 0
}
},
"vmCount": 0
}
}
比如,给getApp().GlobalData.newData赋值后,修改---->保存---->差量编译后,再获取getApp().globalData.newData就会变成类似以上的对象
还有data属性中的对象也经常会变成这个,不知道什么原因
哪位前辈能解释下,什么原因导致出现这个问题?
5 个回复
damdmen (作者) - 社交app创业中,求靠谱合伙人
更新:自己暂时按照这里的方法解决了
https://stackoverflow.com/questions/52873516/vue-js-returns-ob-observer-data-instead-of-my-array-of-objects
在打印res前加一句
let obj2 = Object.assign([], res)
console.log(obj2)
damdmen (作者) - 社交app创业中,求靠谱合伙人
更新2:
还是有问题,使用let obj2 = Object.assign([], res) 后,可以正常打印出 获取到的数据
let obj2 = Object.assign([], res)
console.log(obj2) //能够打印出正确的数据
但想要继续把数据打印到页面上问题就又出现了
let obj2 = Object.assign([], res)
console.log(obj2) //打印出的是ob对象
this.datalist = obj2
ps:数据源为 https://testnet.binance.vision/api/v3/ticker/24hr
管理员能否测试一下?好像只要获取的数据量稍大一点,vue就会出现这个问题
1***@qq.com
请问博主解决了吗,我是在多次push进数组后会出现,这个数据还有很多重复,但是我取用好像只能取第一层?
y***@163.com
console 数组,对象都会这样,相当不方便啊 没有解决办法吗?
r***@126.com
可以用内置浏览器调试,进入浏览器的console,这时候那些_ob_的对象都是可以点进去看真实值的。
这主要是因为要做响应式的风格,你的数据都被Observer包装过了。在Chrome内核的内置浏览器的console里面,会自动为你调用相应的Observer为你求值的。
y***@163.com
感谢666
2022-03-22 15:41