[随笔] echarts 图表数据实现计时自动刷新

[随笔] echarts 图表数据实现计时自动刷新

参考:https://blog.csdn.net/qq_43750501/article/details/108204262

首先我的 echarts 各个模块图表是用组件抽出来写的,在各个子组件中编写绘制各个图表。

  • 父组件中:

    父组件向子组件传递参数— 刷新时限 ,每个子组件刷新时间可以不一样

    <ConnectData class="chart1" :refreshTime="60000" /><TaskData class="chart2" :refreshTime="61000" />
  • 子组件中:

    • prop 获取传递来的刷新时限

      data() 中定义一个计时器变量

      props: {    // msg: String    refreshTime: null},data() {    return {      timer: null,    }}
    • 在钩子函数 mounted() 中进行绘图与刷新操作

      mounted() {    let that = this;    // 初始化    that.initDatas();    // 调用计时器,定时刷新图表    that.timer = setInterval(() => {      that.initDatas();    }, that.refreshTime);},
    • 在页面销毁前 清除计时器

      beforeDestroy() {    // 销毁前清除计时器    clearInterval(this.timer);},
    • initDatas

      // 先获取数据,再调用绘图方法,可将绘图方法封装initDatas() {    let that = this;    let obj = {        "branchCN": "xxx",        "linetype": ""    };    // 调用请求数据方法    queryWorkStaff(obj).then((resp) => {        // console.log(resp.data);        if(resp.data.Code == '200') {          let result = resp.data.Result;          // 获取接口数据...          let totalPersonCount = result.totalPersonCount; // 总人数          // ...          // 处理数据          // ...          // 重置页面数据          that.dataSource.staffNums.staff_outAll = totalOutPeopleCount; // 总人数          // ...          // 绘图          that.drawChart();        } else {          alert('数据获取失败,无法刷新!');          console.log(err);          clearInterval(that.timer); // 获取失败,清除计时器        }      }).catch((err) => {        alert('数据获取失败,无法刷新!');        console.log(err);        clearInterval(that.timer); // 获取失败,清除计时器      });},
    • 在绘图方法中:

      drawChart() {// 基于准备好的容器,初始化 echarts 实例let myChart = echarts.init(document.getElementById('carChart'), 'dark');// 具体配置省略...// ...// 添加以下语句可让图表重新绘制,展现动画效果。(myChart为初始化的图表对象)myChart.clear();// 使用上面定义的配置项 option 来配置图表myChart.setOption(option);}

来源:https://www.icode9.com/content-4-798451.html

(0)

相关推荐