首页 > 其他分享 >Vue+Echarts--父组件+子组件(基础)

Vue+Echarts--父组件+子组件(基础)

时间:2022-09-27 10:59:43浏览次数:47  
标签:textStyle Vue -- myChart 图表 组件 type echarts

基本的思路就是:在父组件获取后端数据,然后传到子组件,子组件创建图表进行展示。

1、获取后端数据

 

2、将数据传给子组件,并将子组件引入到父组件

 

 3、子组件接收数据

 

 4、处理数据

 

 5、挂载到盒子上

 

 

6、创建图表

7、图表自适应

 

 8、全部子组件代码

<template>
  <div>
    <div class="main" ref="myChart"></div>
  </div>
</template>

<script>
import * as echarts from 'echarts' // 引入echarts图表

require('echarts/theme/macarons') // 图表主题
export default {
  name: 'CChart01',
  props: {
    ChartDatax: Array, // 接收数据+数据类型
    ChartDatay: Array,
    ChartName: String
  },
  watch: { // 监视属性 解决数据异步
    ChartDatax: {
      deep: true,
      handler() {
        this.ShowChart()
      }
    },
    ChartDatay: {
      deep: true,
      handler() {
        this.ShowChart()
      }
    }
  },
  mounted() {
    this.ShowChart() // 创建图表
  },
  methods: {
    ShowChart() {
      const myChart = echarts.init(this.$refs.myChart, 'macarons') // 挂载节点
      const option = { // 配置项
        tooltip: {
          backgroundColor: '#00b8ff'
        },
        legend: {
          textStyle: { color: '#ffffff' }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '10%',
          containLabel: true
        }, // 图表在div中的位置
        xAxis: {
          type: 'category',
          data: this.ChartDatax,
          boundaryGap: false,
          axisLine: {
            lineStyle: {
              width: 2, // 线的大小
              type: 'solid' // 轴线的类型
            },
            onZero: false
          },
          axisLabel: { // 文字倾斜
            rotate: 80,
            textStyle: {
              fontSize: 12,
              fontWeight: 'bold'
            }
            // 坐标轴刻度标签的相关设置。
            // interval: 0,
          }
        },
        yAxis: {
          name: '温度(℃)',
          nameTextStyle: {
            fontSize: 14,
            padding: [10, 10, 10, 10],
            fontWeight: 'bold'
          },
          type: 'value',
          axisLine: {
            lineStyle: {
              width: 1, // 线的大小
              type: 'solid' // 轴线的类型
            },
            onZero: false
          },
          axisLabel: {
            textStyle: {
              fontWeight: 'bold',
              fontSize: 12
            },
            // 坐标轴刻度标签的相关配置
            interval: 0
          },
          splitArea: {
            show: false
          }
        },
        dataZoom: [
          {
            type: 'slider',
            height: 20,
            xAxisIndex: 0,
            filterMode: 'none',
            textStyle: { color: '#ffffff' }
          },
          {
            type: 'inside',
            height: 20,
            xAxisIndex: 0,
            filterMode: 'none',
            textStyle: { color: '#ffffff' }
          }
        ],
        series: {
          name: this.ChartName + '(℃)', // 图表名称
          type: 'line',
          data: this.ChartDatay, // 数据
          symbolSize: 6, // 点的大小
          emphasis: {
            focus: 'series' // 聚焦当前的区域高亮
          }
        }
      }
      myChart.setOption(option)
      // 监听页面大小  设置图表自适应
      window.addEventListener('resize', () => {
        myChart.resize()
      })
    }
  }
}
</script>

<style scoped lang="scss">
.main { // 样式,不设置高宽,图表不显示
  width: 800px;
  height: 600px;
  margin: 0 auto;
  border: 1px solid skyblue;
}
</style>

这种写法有利有弊,好处就在于便于理解,写法简单,展示图表没有问题。

弊端在于,想展示的数据过多的话,就会造成大量的代码冗杂。不灵活。要展示的折线数量事固定死的,不能应对高质量需求。

 

标签:textStyle,Vue,--,myChart,图表,组件,type,echarts
From: https://www.cnblogs.com/reverse-x/p/16733667.html

相关文章

  • video标签设置autoplay无效
    在html页面使用video标签的时候,给它设置了autoplay属性,即autoplay=“autoplay”,发现没有什么效果;解决方法是:给video标签加上muted属性就可以自动播放了,静音的意思;......
  • LogBack
    logback的基本使用<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--配置集中管理属性--><propertyname="pattern"value="[%-5level]%d{yyyy-MM......
  • winserver2019 域迁移的思路
    忘记DS还原密码“开始”--“运行”输入:ntdsutil.exec:\windows\system32\ntdsutil.exe:setdsrmpassword重置DSRM管理员密码:resetpasswordonserverwindows2请键入DS......
  • RT-THREAD nano移植步骤
    1.拷贝所有文件,libcpu,bsp文件夹中只需要拷贝对应M4/M3文件  2.rtthread_startup函数芯片外设初始化,systick初始化。芯片库自带的systick中断入口函数去掉,因为rt-thre......
  • on the IPv6 loopback interface: 'Cannot assign requested address'
    .netcore+docker  需要修改两个地方Dockerfile添加 ENVASPNETCORE_URLS=http://+:44303  FROMmcr.microsoft.com/dotnet/aspnet:6.0ASbaseENVASPNETCORE......
  • AtCoder Beginner Contest 270 G,Ex
    y1s1,G和Ex在推等比数列式子上是相似的。G前置知识:BSGS(其实就是根号讨论)首先我们展开这个递归式:\[X_{i}\equivA^{i}S+\sum_{j=0}^{i-1}A^jB\modP\]感觉第一项有......
  • pb中打印设置
    IFmessageBox("提示","是否打印?",Exclamation!,OKCancel!,1)=1Thenopenwithparm(w_print_setup,dw_1)ElsemessageBox("提示","打印取消!!")EndIFdw_1.ob......
  • BrownfieldsWeb 开发项目
    BrownfieldsWeb开发项目介绍吨WebDev项目集成了业界在开发操作中使用的四大概念。即HTTPAPI,关系数据库设计和SQL(使用sqlite3),对象持久性,主要关注于逻辑和理解实现。......
  • 棕地:WebDev 项目报告
    棕地:WebDev项目报告Web开发可以分为两种主要类型:动态网页和静态网页。在本文中,我们将重点介绍动态网页和幕后发生的奇特事物我的文章涵盖了一个简短但重要的项目,该项目......
  • 棕地网络应用程序
    棕地网络应用程序手头的项目可以分为四个部分:关系数据库设计和SQL持久性HTML、CSSHTTPAPIHTTPAPI我们编写了一个API,它能够从数据库中检索单个任务,还能够向数据......