【Vue + Echarts】DOM大小改变后重绘图表(resize)

Vue中使用Echarts绘图,DOM改变后重绘

1. 我的项目背景

首先,我使用Vue+Element-UI搭建的系统框架,左侧菜单栏和标题,右侧上方横条上有一个按钮,点击可以实现菜单栏的折叠与展开。
折叠菜单

2. Echarts图表不能重绘

一开始的思路,是监听DOM变化,于是在网上搜索了一些方法,但是由于本系统并不会大量地改变DOM,没有必要监听DOM宽高的变化。系统中只有折叠和展开两个状态,所以只需要简单的用一个flag表示,监听其true/false就可以了。我通过在store中创建变量isCollapse来管理折叠与展开。
store代码

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        isCollapse: false
    },
    mutations: {
        commitCollapse(state, bool) {
            state.isCollapse = bool;
        }
    }
})

折叠空白

3. 监听isCollapse变化,调用echartsresizeAPI

我们在绘制echarts的vue单文件中监听isCollapse变化,然后调用resize就可以了。

<template>
    <div :id="chartId" style="height: 100%;width: 100%;"></div>
</template>

<script>
var echarts = require("echarts");
export default {
    data() {
        return {
            chartId: "pie",
            myChart: null,
            option: {
				// 你的option
			}
        }
    },
    /* *******************重点******************** */
    computed:{
        isCollapse(){
            return this.$store.state.isCollapse;
        }
    },
    watch:{
        isCollapse(newValue, oldValue){
            this.myChart.resize();
        }
    },
    /* ******************************************* */
    mounted() {
        // 基于准备好的dom,初始化echarts实例
        this.myChart = echarts.init(document.getElementById(this.chartId));
        this.myChart.setOption(this.option);
    }
};
</script>
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值