echart在老版本有nodata相关数据配置,但是到了4.x版本就被去除掉了,这里简单介绍一下如何借鉴loading注册一个nodata的效果。
可以看到源码有注册loading的方法,官方并没公开出来
registerLoading('default', loadingDefault);
借鉴修改 loadingDefault 来注册一个新的loading,代码如下:
var loadingNodata = function (api, opts) { opts = { text: '没有数据', color: '#c23531', textColor: '#000', maskColor: 'rgba(255, 255, 255, 0.8)', zlevel: 0 }; var mask = new echarts.graphic.Rect({ style: { fill: opts.maskColor }, zlevel: opts.zlevel, z: 10000 }); var labelRect = new echarts.graphic.Rect({ style: { fill: 'none', text: opts.text, textPosition: 'right', textDistance: 10, textFill: opts.textColor }, zlevel: opts.zlevel, z: 10001 }); var group = new echarts.graphic.Group(); group.add(labelRect); group.add(mask); // Inject resize group.resize = function () { var cx = api.getWidth() / 2; var cy = api.getHeight() / 2; labelRect.setShape({ x: cx-20, y: cy-20, 10 * 2, height: 10 * 2 }); mask.setShape({ x: 0, y: 0, api.getWidth(), height: api.getHeight() }); }; group.resize(); return group; }; echarts.registerLoading("nodatas", loadingNodata);
然后在无数据的时候使用。一定要记得重新加载数据时清理掉loading
$statCharObj.hideLoading(); //do .. if (!category.length) { $statCharObj.showLoading("nodatas"); }