echarts 图表无数据时显示“暂无数据”

如标题所述,我们希望 echarts 图表在没有数据时显示 “-暂无相关数据-” 字样。

操作:

需要对返回的数据做判断,如果有数据则正常显示图表,如果没有数据,我们将此 div 的内容改为文本 “-暂无相关数据-”,并设置样式即可。

HTML:

<div id="chart"></div>

JS(Vue):

方法(一):

// 无数据时:展示暂无数据
const dom = document.getElementById('chart');
dom.innerHTML = '-暂无相关数据-';
dom.style.cssText = 'text-align:center; color: #999; border: none;line-height: 300px';
dom.removeAttribute('_echarts_instance_');

最后一行代码是关键,如果不加的话,可能导致下次渲染失败。

原理:

未实例化的 echarts 在实例化的过程中,会在该 div 上生成一个类似 ID 的自定义属性 _echarts_instance_ ,然后进行后面的渲染操作。当我们刷新已实例化的 echarts 图表时,echarts会先匹配该 div 容器上的 _echarts_instance_ 属性值是否与实例对象的 ID 一样,如果一样会在原有的结构上进行渲染。如果此时我们的页面显示的 “-暂无相关数据-” ,这时刷新图表 ID其实没变,但是我们破坏了原有的结构,所以无法重新渲染出表格内容。

当然,除了上述写法外,我们还可以这样写:

方法(二):

// 有数据时写入
const chart = document.getElementById('chart');
chart.setAttribute('_echarts_instance_', '');
this.chart = this.$echarts.init(chart);

_echarts_instance_ 也可以在 初始化实例的时候以 重新设置值的方式加入,其他(展示暂无数据的逻辑)不变。

上面两种方法,选择一种使用就可以了 ~

posted @ 2021-08-10 09:55  拾忆-iiii  阅读(5367)  评论(0编辑  收藏  举报