场景描述

我们在项目中,很多时候都会使用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设置暂无数据的更多相关文章

  1. 关于echart没有数据显示暂无数据

    对于echart当没有数据的时候怎么显示, 首先,如果你的series的值为空值的话,曲线将是一片空白,什么都不会有,所以在这里就要进行一个判断,如果没有值的话,人为的添加一个键 if(Object. ...

  2. elementUi-2.13.2版本添加暂无数据

    1.实现效果如下: 2. 代码实现 <el-table empty-taxt="暂无数据"></el-table> css样式设置: .el-table__ ...

  3. Repeater为空时显示“暂无数据”,很方便实用方法

    Repeater为空时显示“暂无数据”,很方便实用方法 <FooterTemplate>   <asp:Label ID="lblEmptyZP" Text=&q ...

  4. Repeater在无数据记录时显示暂无数据

    原文:Repeater在无数据记录时显示暂无数据 方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <Footer ...

  5. Vue 解决先渲染 暂无数据

    // 组件 data(){ return { data:null // 设置默认值为null } } // template <div v-show="data != null&quo ...

  6. repeater没有数据显示暂无数据,无记录

    方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <FooterTemplate> <asp:Labe ...

  7. (转)Repeater在无数据记录时显示暂无数据

    方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <FooterTemplate>     <asp: ...

  8. ajax导致Echarts不显示饼图数据、柱状图数据只显示气泡的问题。

    1.ajax导致Echarts不显示饼图数据.柱状图数据只显示气泡的问题. ajax的同步.这个同步的意思是当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个aj ...

  9. easyUI datagrid表格添加“暂无记录”显示

    扩展grid的onAfterRender事件 var myview = $.extend({}, $.fn.datagrid.defaults.view, {     onAfterRender: f ...

  10. SB中设置UITextField 无边框,真机上输入汉字聚焦时,文字 下沉

    解决方案:sb中一定要设置有边框,然后在代码里设置成无边框 然后正常了. 参考:https://segmentfault.com/q/1010000007244564/a-10200000073481 ...

随机推荐

  1. 鸿蒙轻内核源码分析:Newlib C

    摘要:本文介绍了LiteOS-M内核Newlib C的实现,特别是文件系统和内存分配释放部分,最后介绍了Newlib钩子函数. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列二十 Newlib ...

  2. Windows系统快速安装Superset 0.37

    Windows系统安装Superset 0.37 Superset 是一款由 Airbnb 开源的"现代化的企业级 BI(商业智能) Web 应用程序",其通过创建和分享 dash ...

  3. 总结vue3 的一些知识点:MySQL 运算符

    MySQL 运算符 本章节我们主要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 算术运算符 MySQL 支持的算术运算 ...

  4. Solon 开发进阶,一、插件扩展机制

    Solon 开发进阶 一.插件扩展机制 二.体外扩展机制 三.常用配置说明 四.启动参数说明 五.全局异常订阅 像 @Tran.@Cache 之类的注解开发成果,都会希望能在所有项目中复用.Solon ...

  5. hystrix.stream dashboard

    9001 POM.XML <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...

  6. Safari 14.0 的功臣 Webp?

    俗话说:一图胜千言.在网上,图片虽然可以让用户更加简单明了地看到更多信息,但是图片体积也可以抵过上千字节甚至更多.研究表明,打开一个 HTTP 网页,其中图片平均占比为 64%.在图片占比如此高的情况 ...

  7. leaflet 绘制 带箭头的线

    箭头不是画的线段,是贴的图标,再按方向旋转一下. 代码: //添加箭头线 function addLineDirection(polylinePointArr, source, target) { v ...

  8. 0x41 数据结构进阶-并查集

    A题 程序自动分析 题目链接:https://ac.nowcoder.com/acm/contest/1031/A 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考 ...

  9. P3574 [POI2014]FAR-FarmCraft (树形DP)

    这题直接贪心显然不可行. 考虑树形dp,用 \(f_i\) 表示到 \(i\) 人后,以 \(i\) 为根的所有人安装完的最短时间. 对于一个节点 \(u\), 假设拜访子节点的顺序为 \(v_1,v ...

  10. Codeforces Round #730 (Div. 2) A~D题个人题解

    比赛链接:Here 1543A. Exciting Bets math, 给定两个数字 \(a,b (a,b \le 1e18)\) 和以下两种操作: \(a + 1,b+1\) \(a-1,b-1\ ...