Vue使用Echarts渲染柱状图,解决没有在页面里面展示的问题

495 阅读1分钟

由于项目里最近要用到echarts图表来展示数据,以前没有用过echarts图表来进行展示数据,看了一下官网,还挺简单的,然后我就开始了我的三部曲。
第一步,向后台请求数据;第二步,将数据赋值到data里面的变量,第三步,将数据赋值到echarts图表配置项里面。当我以为成功了的时候,结果打开页面,并没有展示柱状图,然后我就打印了一下数据,发现它有数据,但是没有渲染,我以为是视图渲染问题,于是我就把setOption函数放到mounted里面,结果还是不行,如下图所示。

dom结构和data里面的option配置 image.png

数据请求和挂载 image.png

我打印出来的数据是{ob: Observer} 这种格式的,最开始还以为是这个原因,瞎弄半天也没有搞定,然后网上搜说要用 JSON.parse(JSON.stringify(data)) 将返回的数据data先转换为JSON字符串形式,然后再从字符串形式转换成JSON格式。看网上说{ob: Observer} 这种格式的是 Vue 对数据监控添加的属性。但是当我设置以后还是不能出现柱状图。如下如所示。 image.png

最后,解决办法就是不用在mounted里面渲染,而是在数据请求完以后直接渲染,因为异步的原因统计图在渲染的时候后台还没有请求到数据,所以就是空白的鸭,统计图的渲染不要放在生命周期moutend中,而是在后台数据请求完成之后再渲染,如下图所示。

image.png

然后柱状图就出来了。

image.png