Echarts大屏半饼图(自动轮播高亮、resize)

技术栈:Vue + ECharts.js

简介

某些情况,大屏页面需要实现一些比较美观的图表,常用的图表插件有echarts,此篇的实现效果为饼图半环形图南丁格尔玫瑰图的结合体。
这两种图具体实例可查看echarts官网
目标图:
目标图
echarts示例:
echarts 饼图
同时实现轮播高亮,采用定时循环操作,先调用echartsdownplay取消所有的高亮,再调用highlight高亮指定数据。
每次窗口大小改变时,进行监听,chart更新,调用resize方法,避免出现错乱效果。

实现

安装echarts插件

npm install echarts --save

页面布局

<template>
  <div>
    <div id="pieChart"></div>
  </div>
</template>
<style>
#pieChart {
     
     
  width: 500px;
  height: 250px;
  margin: 0 auto;
}
</style>

逻辑实现

resize

监听窗口resize事件,及时重绘图表。
其中,需要注意到keep-alive 缓存特殊的两个阶段,activated(组件激活时) 和deactivated(组件停用时) 。

  • activated(组件激活时) keep-alive 缓存的组件激活时调用。
  • deactivated(组件停用时) keep-alive 缓存的组件停用时调用。

添加keep-alive标签后会增加activated和deactivated这两个生命周期函数。

import {
   
    debounce } from '@/utils'

export default {
   
   
  data() {
   
   
    return {
   
   
      $_resizeHandler: null
    }
  },
  mounted() {
   
   
    this.initListener()
  },
  // 组件激活时
  activated() {
   
   
    if (!this.$_resizeHandler) {
   
   
      // avoid duplication init
      this.initListener()
    }

    // when keep-alive chart activated, auto resize
    this.resize()
  },

  beforeDestroy() {
   
   
    this.destroyListener()
  },

  // 组件停用时
  deactivated() {
   
   
    this.destroyListener()
  },
  methods: {
   
   
    
    // 初始化监听
    initListener() {
   
   
      this.$_resizeHandler = debounce(() => {
   
   
        this.resize()
      }, 100)
      window.addEventListener('resize', this.$_resizeHandler)
    },

    // 销毁监听
    destroyListener() {
   
   
      window.removeEventListener('resize', this.$_resizeHandler)
      this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值