关于vue data数据{__ob__: Observer }的问题
遇到这问题之后看了百度的很多解决办法,很多都是混淆没说清楚,我很讨厌,所有我自己总结一下希望帮到你。具体分为:
比如用axios请求到数据,如果是用的then,那直接赋值给data对象里的属性。
$http.get("http://m.php.com/goods.php?limit="+this.limit+"&page="+this.page).then((res) => { this.imgsArr.push(...res.data.data); if(this.imgsArr.length<res.data.count){ this.page+=1; } else { this.lodding = false } });
但是有情况是需要外部赋值,那就是异步请求的问题,外部打印接收赋值的变量为空,但是打印有是有值的,并且是带有{__ob__: Observer },这是vue本身对data()数组对象的监控器,没什么影响,你赋值了那肯定监听,并不是说出现{__ob__: Observer },不可枚举。
想要拿到值就用setTimeout 延迟操作就行。
或者用同步阻塞也是能解决
另外一种情况,需要去遍历时,数组嵌套对象的数据集不能遍历 然后用JSON.parse(JSON.stringify(object))解决。但我不确定,因为我没遇到过。我自己试了是可遍历的
我的猜想是父子组件的共享数据问题,并不是所谓的无法操作遍历,用JSON.parse(JSON.stringify(object))能解决本身就是深拷贝,就变成独立数据。