Vue循环渲染:使用echarts展示多个相同图表
25 浏览量
更新于2024-08-29
收藏 74KB PDF 举报
"在Vue应用中,经常遇到需要在同一个页面上展示多个相同但数据不同的ECharts图表,例如展示多个仓库或设备的数据对比。本文将介绍如何通过Vue的`v-for`指令循环渲染多个ECharts图表,以实现这样的功能。
在模板部分,使用`v-for`循环遍历数据列表,并在每个迭代中创建一个包含`roseChart`类的`div`元素。关键在于,这里使用了类(class)而不是ID(id),因为ID应该是唯一的,而我们在循环中需要多个相同的类名。
```html
<template>
<div class="projectCost">
<div class="container">
<div class="wrapper" v-for="(item, index) in list" :key="index">
<div class="roseChart"></div>
</div>
</div>
</div>
</template>
```
在`data`对象中,定义了一个`list`数组,包含了多个带有图表数据的对象,例如仓库或设备的费用信息。
```javascript
data() {
return {
list: [
{
id: 1,
price: {
name: '项目一',
resData: [
{ name: '订购费用', value: 12 },
{ name: '饲养费用', value: 18 },
{ name: '实验费用', value: 8 },
{ name: '其他费用', value: 10 },
],
},
},
{
id: 2,
price: {
name: '项目二',
resData: [
{ name: '订购费用', value: 18 },
{ name: '饲养费用', value: 10 },
{ name: '实验费用', value: 20 },
{ name: '其他费用', value: 9 },
],
},
},
],
};
},
```
在`methods`中,定义了一个名为`drawRose`的方法,该方法初始化ECharts实例并设置图表选项。首先,通过`getElementsByClassName`获取所有具有`roseChart`类的元素,然后遍历这些元素,对每一个元素初始化一个ECharts实例,并根据当前索引设置相应的图表数据。
```javascript
methods: {
drawRose() {
const echarts = require('echarts');
const roseCharts = document.getElementsByClassName('roseChart');
for (let i = 0; i < roseCharts.length; i++) {
const myChart = echarts.init(roseCharts[i]);
myChart.setOption({
color: ['#4DFFFD', '#7B3FF6', '#1F6DFE', '#34A6FE'],
title: {
text: this.list[i].price.name,
left: '70',
top: 5,
textStyle: { color: '#333' },
},
// ...
// 其他图表配置项,如series、tooltip等
// ...
});
}
},
},
```
为了确保图表正确显示,你需要在组件的`mounted`生命周期钩子中调用`drawRose`方法,以便在DOM加载完成后初始化ECharts图表。
```javascript
mounted() {
this.drawRose();
},
```
这样,每个`roseChart`类的`div`都将根据对应的`list`数据生成一个ECharts玫瑰图,展示不同项目的费用结构。同时,由于`v-for`的使用,我们可以轻松地扩展这个列表,以显示更多的图表。
总结一下,实现Vue中循环渲染多个相同ECharts图表的关键点包括:
1. 使用`v-for`循环遍历数据列表。
2. 在模板中创建一个具有相同类名的容器,用于放置图表。
3. 在`mounted`生命周期钩子中初始化ECharts图表,并使用`getElementsByClassName`获取所有需要绘制的元素。
4. 遍历这些元素,根据当前索引设置图表数据。
通过这种方式,你可以在Vue项目中灵活地创建和管理多个ECharts图表,展示丰富的数据可视化效果。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-10-15 上传
2024-11-07 上传
2024-11-07 上传
2024-11-07 上传
2023-03-31 上传
2020-10-15 上传
weixin_38704870
- 粉丝: 6
- 资源: 1000
最新资源
- 随机电压发生器设计(仿真电路+含VB上位机+程序)-电路方案
- 测试git仓库
- psplinklauncher-开源
- express+mysql+vue,从零搭建一个商城管理系统6-数据校验和登录
- home
- ember-computed-injection:将 Ember 容器中的任何内容作为属性注入任何类。 (即有点像对其他一切的“需求”)
- eclipse CheckStyle
- kattus-real-estate
- scrumPokerTool
- SC PreProcessor-开源
- HideYoElfHideYoBytes:此C程序将检查ELF文件中是否在程序段之间插入了字节
- Android应用程序图标动画效果源代码
- react-atomshell-spotify:使用 Atom Shell、React 和 Babel 探索桌面应用程序
- 基于AT89S52单片机的步进电机驱动(原理图+程序)-电路方案
- swift-base58:快速实施base58
- CDNSearcher:Alfred工作流程更快地包含bootcdncdnjs文件