There is a chart instance already initialized on the dom. 在同一个页面要打开不同的echart
时间: 2025-01-18 12:18:11 浏览: 34
### 创建和管理多个 ECharts 图表实例
为了在同一 HTML 页面中创建和管理多个 ECharts 实例,可以采用模块化的方式进行开发。通过 Vue.js 或者原生 JavaScript 来初始化各个图表,并确保每个图表都有独立的 DOM 容器。
#### 使用 Vue.js 封装组件来处理多图表示例
在 Vue 项目里可以通过定义一个可复用的 `Echart` 组件来简化操作:
```html
<template>
<div :id="chartId" class="demo-chart"></div>
</template>
<script>
export default {
props: ['chartId', 'options'],
mounted() {
const chartDom = document.getElementById(this.chartId);
const myChart = this.$echarts.init(chartDom);
// 设置初始配置项
myChart.setOption(this.options);
// 添加窗口大小变化监听事件以支持响应式布局
window.addEventListener('resize', function () {
myChart.resize();
});
// 清除之前的定时器防止重复绑定
clearTimeout(myChart._resizeTimeout);
myChart._resizeTimeout = setTimeout(() => {
window.addEventListener("resize", () => {myChart.resize()});
}, 200)[^1];
},
beforeDestroy() {
// 移除监听器避免内存泄漏
window.removeEventListener('resize', null);
}
}
</script>
```
此代码片段展示了如何利用 Vue 的生命周期钩子函数,在组件挂载完成后立即渲染 echarts 并设置好相应的选项;同时也实现了当浏览器尺寸发生变化时自动调整图表大小的功能。
对于需要展示多个图表的情况,则可以在父级组件内多次调用上述自定义好的 echart 子组件即可轻松完成部署工作。需要注意的是要给每一个图表分配独一无二 id 属性以便区分不同的 dom 节点[^3]。
另外如果想要让 tooltip 提示框能够跨图表联动显示数据的话,那么就需要按照官方文档中的 axisPointer.link 参数来进行设置了[^2]。
阅读全文
相关推荐


















