包含Echarts的模块多处引用导致显示异常问题的解决方案

包含Echarts的模块多处引用导致显示异常问题的解决方案

业务场景:

一个Echarts图表组件individual-monitoring-arc.vue,需要在一个大型项目上引用两次

但只有首次引用的该组件显示正常,后面引用的组件不会显示Echarts图表,且会影响首次引用的组件显示

两处Echarts图表数据传输没问题

问题原因:

多次引用在同一个大型项目中,会导致id为myChart的Echarts图表容器出现两次,每次执行
this.myChart = echarts.init(document.getElementById('myChart')时,都会从上向下遍历HTML文档,找到第一个符合条件的DOM元素,所以,问题的跟原在于每次都是找的同一个myChart元素

问题解决:

在引用individual-monitoring-arc.vue组件时为其传入数据,动态的指定Echarts图表的容器ID。

代码展示:

引用Echarts组件的组件处理:

<MyEcharts echartsBoxId="monitoring">

包含Echarts的组件individual-monitoring-arc.vue处理:

<template>
<div :id="echartsBoxId"></div>
</template>

<script>
// 引入基本模板
let echarts = require("echarts/lib/echarts");
// 引入柱状图组件
require("echarts/lib/chart/bar");
// 引入提示框和title组件
require("echarts/lib/component/tooltip");
require("echarts/lib/component/title");

export default {
	props: ["echartsBoxId"],
	data() {
	    return {
	    	echartsBoxId: 'myEchart',
	    	myChart: null
	    }
	},
	created() {
		this.echartsBoxId = this.$props.echartsBoxId
	},
	methods: () {
		initEcharts() {
			this.myChart = echarts.init(document.getElementById(this.myChartBox));
			let option = {
				//something
			};
			this.myChart.setOption(option);
		}
	}
}
</script>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值