这个问题是,昨天检查数据有没有获取到时候遇到的
之前都是用console.log()去打印数据来检查有没有问题,这次也一样
// 之前是这样的
mounted: function () {
this.getdata();
console.log(this.res[0]);
this.$forceUpdate(); //强制刷新视图
}
这里通过console.log()打印数据展开后是有数据的,当时就以为数据已经获取到了,后来感觉不太对,就在获取数据之前也加了打印,展开后发现竟然也是有数据的,类似于下面这样
然后改成了alert试了,用JSON.stringify格式化为字符串后用alert输出,效果如下,是没有问题的
所以后来改成了用alert显示判断数据是不是空的,因为alert显示时后面的代码是不会执行的,点击确定以后才会执行
弄好以后去网上查了一下关于console.log打印的问题,在知乎上发现了一个不错的回答,好像是谷歌浏览器console.log()的问题,原文链接:alert 和 console.log 的结果不同?
下面是原文的代码
// 实验 1 var a = { a: { a: '要够深才能制造这个幻觉' } } // ← 记住我的模样 console.group('实验1') console.log('这个a应该是这样:%s', JSON.stringify(a)) console.log('“实际”上是这样%o', a) console.log('然后他们惊呼“console.log是异步的”,原因实际上在Object右边的"i"图标里写着') a.a.a = '我变了' console.groupEnd('实验1') // 实验 2 var b = { x:'你好,我是快照', y: { z: '要够深才能制造这个幻觉' } } // ← 记住我的模样 console.group('实验2') console.log(b) b.x = '你展开后会看到是我' console.log('↑展开试试,展开后再看看Object左边这个“i”上写着啥') console.groupEnd('实验2') /* Object value at left was snapshotted when logged, value below was evaluated just now. 这句话是说: 这左边的值是log的时候的快照,下面的值是展开的时候计算出来的。 */
运行以后是下面这样的:
蓝色框框里面的内容,是console.log打印时的内容,
红色框框里面的内容,是点击展开时重新请求的,这个时候是最新的数据,而不是当时的数据
然后我改了一下,新加了一个转换为字符串以后,再输出的console.log
这样console.log打印的数据就是当时的数据了。