shuishen
2023-05-08 e24f70ababdee2b4fdce71c6b80a9bc928fa0331
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-10-31 11:02:28
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-10-31 11:02:55
 * @FilePath: \srs-police-affairs\src\components\echarts\mixins\chart-resize.js
 * @Description: 
 * 
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved. 
 */
 
// 是一个监听元素大小改变的插件,除了窗口的大小改变会引起变形之外,echart实例的父元素大小改变也会使其变形,所以我们还要对其父元素大小改变进行监听,做到完全的自适应。
import ResizeListener from 'element-resize-detector'
 
export default {
    methods: {
        /* 对chart元素尺寸进行监听,当发生变化时同步更新echart视图 */
        chartEleResizeListener () {
            const chartInstance = ResizeListener({
                strategy: 'scroll',
                callOnAdd: true
            })
            chartInstance.listenTo(this.$el, () => {
                if (!this.chart) return
                this.chart.resize()
            })
        },
 
        /* 当窗口缩放时,echart动态调整自身大小 */
        windowResizeListener () {
            if (!this.chart) return
            this.chart.resize()
        }
    },
    mounted () {
        window.addEventListener('resize', this.windowResizeListener)
        this.chartEleResizeListener()
    },
    beforeDestroy () {
        window.removeEventListener('resize', this.windowResizeListener)
    }
}