echarts 暂无数据的完美解决办法

2023-10-29

前景

很简单的一个思想 我希望没有数据的时候 不显示图表,并且用empty来替换 但是直接使用v-if 会出错 因为调用的时候 拿不到dom了 v-if直接把dom干掉了 怎么办呢

直接上步骤

1、第一步,我们应该在每次点击按钮的时候,发送数据的请求,然后根据数据的变化来决定让谁出现,请求结果出来后,如果有数据就调用initchart方法去初始化echarts图表,完成表格的渲染。代码如下

btn() {
	 this.$nextTick( async () => {
        await this.$refs.refPower.getPowerData()
         this.$refs.refPower.initChart()
      })
}

btn 是控制图形展示的按钮,点击的时候 使用this.$nextTick在dom更新的时候调用请求数据的接口,并且我们等待数据请求完成,在调用初始化echarts表格的函数,两个代码分别如下

async getPowerData(params) {
// 请求接口 有参数就传参数 没参数就调用近七天的数据
         const res = await powerReport(
        params
          ? params
          : {
              deviceCode: this.deviceCode,
              createStartTime: moment().subtract(7, "days").startOf().unix(),
              createEndTime: moment().endOf().unix(),
            }
      );
      this.powerData = res.data  //需要监听的数据
      if (res.data.length > 0 ) {
         this.xData = []  //清空 因为用的push 不清空数据会越来越多 每次请求都保证是空的
         this.yData = []
        this.showPower = true;   //控制图表的显示和隐藏
         res.data.forEach((item) => {
        this.xData.push(item.createTimeName);
        this.yData.push(item.rssi);
      });
      } else{
        this.showPower = false;
      }
    },
initChart() {
           let chartDom = document.getElementById("idchart");
            if (this.showPower) {  // 只有有数据的时候 这里才初始化 没数据就不需要了 所以加个判断 不然会报错 拿不到dom为null
            		echarts图表相关内容
			}
}

下面是监听器的东西

 watch: {
    powerData: {
      handler: function () {
           let chartDom = document.getElementById("idchart");
          if(chartDom !== null) {
               this.destroyChart()  //每次必须清理上一个图 不然不更新数据 这里是我自己定义的
          }
          this.initChart();
      },
    },
  },

销毁图表的方法

 destroyChart() {
      echarts.init(this.$refs.chartDom).dispose();
    },

经过这些步骤,就可以完美实现 echarts有数据展示数据 没数据就显示empty

 <!-- 图表区 -->
    <div
      id="idchart"
      ref="chartDom"
      v-if="showPower"
      style="width: 100%; height: 400px"
    ></div>
    <div v-else class="empty">
      <a-empty />
    </div>

这里是控制显示和隐藏的代码

有什么问题可以一起交流,目前这个方法没有发现什么问题 如果发现问题 我会及时更新!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

echarts 暂无数据的完美解决办法 的相关文章

随机推荐

  • 前端开发者必须知道的 10 个 GitHub 仓库

    内容整理自 ravikmmr 的 Twitter Thread 1 Developer roadmap 初学者如果想学习前端开发 但是不知道从何学起 推荐查看此仓库 你可以获得有关开发的所有学习路线 笔者在之前的文章中对其进行过翻译 2 F
  • Python构建SVM分类器(线性)

    1 SVM建立线性分类器 SVM用来构建分类器和回归器的监督学习模型 SVM通过对数学方程组的求解 可以找出两组数据之间的最佳分割边界 2 准备工作 我们首先对数据进行可视化 使用的文件来自学习书籍配套管网 首先增加以下代码 import
  • 腾讯云阿里云服务器被打进黑洞怎么办

    当腾讯云腾讯云服务器被打进黑洞了我们该怎么办 首先我们要知道以下的这些 黑洞 是什么 黑洞是指服务器受攻击流量超过本机房黑洞阈值时 云计算服务商屏蔽服务器的外网访问 当服务器进入黑洞一段时间后 如果系统监控到攻击流量停止 黑洞会自动解封 进
  • 程序员微信名昵称_微信名字大全

    微信名字 好听的微信名字大全 只求一份安定 无可置疑 吥 恠侑嗳 丶演绎悲伤 一生承诺 简单灬爱 流年灬未亡 舞动D 灵魂 别在我面前犯贱 没有背景丶只有背影 乂日光倾城 丶猫猫er 雪花 飞舞 在哪跌倒 就在哪躺下 淡抹丶悲伤 稀饭你的笑
  • 考研算法题:最短边数最短路

    题目 一个图有很多条最短路 求所有最短路里面的边数最少的最短路的边数 思路1 先求最短路 然后BFS倒推寻找最短边数的最短路的边数 找到直接返回cnt值 include
  • 机器学习- CS 760 Machine Learning

    代码后台私我
  • 【Spring】ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 问题解决

    1 概述 转载 ERR INCOMPLETE CHUNKED ENCODING 200 OK 问题解决 我是在做这个项目的时候遇到这个报错 Spring Spring 网络原因导致日志下载失败 2 简述 浏览器调用接口报错 net ERR
  • Python使用threading.Timer实现执行可循环的定时任务

    前言 Python中使用threading Timer执行定时任务时 执行任务是一次性的 类似于JS中的setTimeout方法 我们对其在封装 改造成可循环的定时器 类似于JS中setInterval方法的效果 值得注意的是 thread
  • 关于distinct——去除重复记录

    distinct译为 不同的 有区别的 在SQL语句中表示去除重复记录的意思 举例 在员工表emp中查询所有的工作岗位 分析 在员工表中的工作岗位字段下有重复的工作岗位 我们在查询的时候就希望将重复的工作岗位显示出一个来就行 在不使用关键字
  • 【模块介绍】6×6矩阵键盘(硬件部分和扫描方式)

    目录 概述 原理图 扫描方式 扫描法 单个按键按下 多个按键按下 行反转法 图解 成品 概述 矩阵键盘非常常见 就是利用键盘组成矩阵来减少IO口的使用 做成6 6的矩阵键盘可以使用12个IO口读取36个按键 矩阵键盘的优势在于成本低 无需其
  • Java中switch case的使用

    Java switch case语句 switch case用来判断一个变量与一系列值中某个值是否相等 每个值称为一个分支 switch case规则 switch语句中变量类型可以是 byte short int char 从Java S
  • 网上疯传的《阿里Java架构师成长之路》!,网友瞬间沸腾了

    工作1 5年开发经验 当你们提出涨工资的时候 或者要offer的时候底气怎么样 是不是底气十足 不给涨工资就辞职 是不是有自信提出来主管 或者是项目经理都能同意 他们相当设法把你留住 如果这样你才是成功 什么技术都没有何谈工资 给你分析一下
  • Algo_math、判断两圆包含

    给定一个圆A X Y 圆心 R为半径 圆B x y 圆心 r为半径 判断 圆B 是否在 圆A 的内部 上图 则不包含 等价于 绿线长度 lt R X x
  • Java面试题详解:什么是面向对象编程

    参考答案 一般我们可以围绕面向对象的几个特征去展开 封装 继承 抽象 多态 个人理解 面向对象编程有点类似于数学建模 一般用于解决一个复杂的问题 解决这个问题通常涉及到多个物理或抽象概念 并且它们之间会有各种关系及交互行为 面向对象编程其实
  • boost.asio服务器使用io_service作为work pool

    使用io service作为处理工作的work pool 可以看到 就是通过io service post投递一个Handler到io service的队列 Handler在这个io service run内部得到执行 有可能你会发现 io
  • linux下查看谁在用显卡

    一般查看显卡的使用情况使用的命令为 nvidia smi 但是这个只能输出显卡的占用及进程 看不到谁在用 信息如下 但是可以借助上面的PID信息 查看对应的进程是谁调用的 命令为 ps f p 4417 其中4417就是上图中的其中一个PI
  • 激活函数---Sigmoid、Tanh、ReLu、softplus、softmax

    激活函数 就是在神经网络的神经元上运行的函数 负责将神经元的输入映射到输出端 常见的激活函数包括 Sigmoid TanHyperbolic tanh ReLu softplus softmax 这些函数有一个共同的特点那就是他们都是非线性
  • 数据结构:树的概念和结构

    文章目录 1 树的概念 2 树的结构 3 树的相关概念 4 树的表示 孩子表示法 双亲表示法 孩子兄弟表示法 5 树在实际中的应用 1 树的概念 树是一种非线性的数据结构 它是由 n n gt 0 个有限结点组成一个具有层次关系的 把它叫做
  • TCP —— TCP连接的建立与释放

    一 TCP连接管理 在TCP连接建立的过程中 要解决以下三个问题 要使每一方都能够确知对方的存在 要允许双方协商一些参数 如最大窗口值 是否使用窗口扩大选项 时间戳选项及服务质量等 能够对运输实体资源 如缓存大小 连接表中的项目等 进行分配
  • echarts 暂无数据的完美解决办法

    前景 很简单的一个思想 我希望没有数据的时候 不显示图表 并且用empty来替换 但是直接使用v if 会出错 因为调用的时候 拿不到dom了 v if直接把dom干掉了 怎么办呢 直接上步骤 1 第一步 我们应该在每次点击按钮的时候 发送