echarts设置暂无数据
场景描述
我们在项目中,很多时候都会使用echarts进行数据展示。
当没有数据的时候,echarts的展示就会特别的难看。
这个时候我们就会优化界面的显示,在echarts中展示暂无数据。
有很多中方法:
1.只设置echarts中的title选项,其他选择都不进行设置
2.在页面中使用v-show或者v-if。有数据的时候展示echarts,没有数据的时候使用其他作为提示
现在我们使用第1种方式来看下,会出现什么样的情况?
使用echarts中的title选项来处理暂无数据
代码功能描述:
最初的时候是有数据的,点击按钮后会显示暂无数据。
然后再次点击,会有数据。以此循环
<template>
<div>
<el-button @click="showEcharts">切换</el-button>
<div id="myChart1"></div>
</div>
</template>
<script>
import echarts from 'echarts'
export default {
data() {
return {
backData: {
dataX: ['卿卿日常', '琅琊榜', '仙剑奇侠传三', '射雕英雄传', '伪装者', '聊斋志异', '县委大院'],
dataY:[820, 932, 901, 934, 1290, 1330, 1320]
},
indexOrder:1,
}
},
mounted() {
this.showEcharts()
},
methods: {
showEcharts() {
this.indexOrder++
let myChart1 = echarts.init(document.getElementById('myChart1'))
let option = {}
//通过控制 indexOrder 来实现是否展示数据
if (this.indexOrder % 2 ==0) {
option = {
xAxis: {
type: 'category',
data: this.backData.dataX
},
yAxis: {
type: 'value'
},
series: [
{
data: this.backData.dataY,
type: 'line',
smooth: true
}
]
}
} else {
option = {
title: {
text: '暂无数据',
x: 'center',
y: 'center',
textStyle: {
fontSize: 16,
fontWeight: 'normal',
}
}
}
}
myChart1.setOption(option)
},
}
}
</script>

实际上遇见的情况
当我们第2次点击按钮的时候。虽然视图上显示了"暂无数据"。
但是仍然有图表展示的信息。与我们最初的想法是相违背的。
它出现了数据和"暂无数据"同时出现了。我们只希望出现一种。
怎么会出现这样的情况呢?不是应该只展示其中一种情况吗?
解决问题的三种办法
代码中的 myChart1.setOption(option)
默认情况ECharts 会合并新的参数和数据,然后刷新图表。
当它合并之后,就会出现数据和"暂无数据"同时显示在界面中。
如何解决这样的情况呢?
1.使用 echarts中setOption(option,notMerge)的第二个参数来解决
chart.setOption(option, notMerge:boolean, lazyUpdate:boolean);
option 图表的配置项和数据
notMerge 可选,是否不跟之前设置的 option 进行合并,默认为 false (即合并)。
lazyUpdate 可选,在设置完 option 后是否不立即更新图表,默认为 false(即立即更新)。
2.echarts.clear() 清空当前实例,会移除实例中所有的组件和图表。
我们可以在渲染图标前,先清空一下实例.
let myChart1 = echarts.init(document.getElementById('myChart1'))
myChart1.clear()
3.echarts.dispose()销毁实例,销毁后实例无法再被使用。
let myChart1 = echarts.init(document.getElementById('myChart1'))
myChart1.dispose()
echarts.clear() 与 echarts.dispose()的区别
echarts.clear()是清空实例,实例任然是存在的,类似于v-show
echarts.dispose()是销毁,销毁后实例不存在,类似于v-if
使用 echarts 中setOption(option,notMerge)的第二个参数来解决
showEcharts() {
this.indexOrder++
let myChart1 = echarts.init(document.getElementById('myChart1'))
let option = {}
if (this.indexOrder % 2 ==0) {
option = {
xAxis: {
type: 'category',
data: this.backData.dataX
},
yAxis: {
type: 'value'
},
series: [
{
data: this.backData.dataY,
type: 'line',
smooth: true
}
]
}
} else {
option = {
title: {
text: '暂无数据',
x: 'center',
y: 'center',
textStyle: {
fontSize: 16,
fontWeight: 'normal',
}
}
}
}
//不进行合并
myChart1.setOption(option,true)
},

echarts设置暂无数据的更多相关文章
- 关于echart没有数据显示暂无数据
对于echart当没有数据的时候怎么显示, 首先,如果你的series的值为空值的话,曲线将是一片空白,什么都不会有,所以在这里就要进行一个判断,如果没有值的话,人为的添加一个键 if(Object. ...
- elementUi-2.13.2版本添加暂无数据
1.实现效果如下: 2. 代码实现 <el-table empty-taxt="暂无数据"></el-table> css样式设置: .el-table__ ...
- Repeater为空时显示“暂无数据”,很方便实用方法
Repeater为空时显示“暂无数据”,很方便实用方法 <FooterTemplate> <asp:Label ID="lblEmptyZP" Text=&q ...
- Repeater在无数据记录时显示暂无数据
原文:Repeater在无数据记录时显示暂无数据 方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <Footer ...
- Vue 解决先渲染 暂无数据
// 组件 data(){ return { data:null // 设置默认值为null } } // template <div v-show="data != null&quo ...
- repeater没有数据显示暂无数据,无记录
方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <FooterTemplate> <asp:Labe ...
- (转)Repeater在无数据记录时显示暂无数据
方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <FooterTemplate> <asp: ...
- ajax导致Echarts不显示饼图数据、柱状图数据只显示气泡的问题。
1.ajax导致Echarts不显示饼图数据.柱状图数据只显示气泡的问题. ajax的同步.这个同步的意思是当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个aj ...
- easyUI datagrid表格添加“暂无记录”显示
扩展grid的onAfterRender事件 var myview = $.extend({}, $.fn.datagrid.defaults.view, { onAfterRender: f ...
- SB中设置UITextField 无边框,真机上输入汉字聚焦时,文字 下沉
解决方案:sb中一定要设置有边框,然后在代码里设置成无边框 然后正常了. 参考:https://segmentfault.com/q/1010000007244564/a-10200000073481 ...
随机推荐
- vue2.x老项目typescript改造过程经验总结
前言: 关于Vue2.x 的TS改造,其实没有啥好说的. 对于vue-cli项目来说,从新跑一遍 vue create xxx-project ,选择Manually select features ...
- QA团队基于DataLeap开放平台能力的数据测试实践
背景 &痛点 随着生态体系扩展和业务发展,数据在业务中承担的决策场景越来越多样化,一部分数据已应用在资损.高客诉等高风险场景,因此对数据质量的要求,尤其是高风险场景的质量要求非常之高.但在保障 ...
- 克服 ClickHouse 运维难题:ByteHouse 水平扩容功能上线
前言 对于分析型数据库产品,通过增加服务节点实现集群水平扩容,并提升集群性能和容量,是运维的必要手段. 但是对于熟悉 ClickHouse 的工程师而言,听到"扩容"二字一定会头疼 ...
- Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
Jenkins 2361.2 + Maven Integration + SVN/GIT + Docker + 阿里云镜像 + Kubernetes(K8S) 本文用于学习,了解原理,和实际应用,有所 ...
- 接口文档 token发展史 jwt介绍和原理 drf-jwt快速使用
目录 昨日回顾 认证 权限 频率 全局异常处理 接口文档 接口文档编写 drf自动生成接口文档 cookies-session-token发展史 jwt介绍和原理 jwt的构成 base64的编码和解 ...
- Safari 14.0 的功臣 Webp?
俗话说:一图胜千言.在网上,图片虽然可以让用户更加简单明了地看到更多信息,但是图片体积也可以抵过上千字节甚至更多.研究表明,打开一个 HTTP 网页,其中图片平均占比为 64%.在图片占比如此高的情况 ...
- SpringBoot 项目实战 | 瑞吉外卖 Day02
该系列将记录一份完整的实战项目的完成过程,该篇属于第二天 案例来自B站黑马程序员Java项目实战<瑞吉外卖>,请结合课程资料阅读以下内容 该篇我们将完成以下内容: 完善登陆系统 新增员工 ...
- L1-048 矩阵A乘以B (15分)
给定两个矩阵A和B,要求你计算它们的乘积矩阵 \(AB\).需要注意的是,只有规模匹配的矩阵才可以相乘.即若A有 \(R_a\) 行.\(C_a\) 列,B有 \(R_b\) 行.\(C_b\) 列, ...
- MySQL驱动扯后腿?Spring Boot用虚拟线程可能比用物理线程还差
之前已经分享过多篇关于Spring Boot中使用Java 21新特性虚拟线程的性能测试案例: Spring Boot 3.2虚拟线程搭建静态文件服务器有多快? Spring Boot 虚拟线程与We ...
- Vue中生成二维码 组件库qrcode使用
qrcode网址: https://www.npmjs.com/package/qrcode 安装代码如下: npm install qrcodeqrcode文档中生成二维码有很多环境下的用法.我们这 ...