IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 将echarts 封装为vue组件 动态加载数据——以饼状图为例 -> 正文阅读

[JavaScript知识库]将echarts 封装为vue组件 动态加载数据——以饼状图为例

基本原理:
1、创建一个用于展示图形的vue组件,保留接收数据的接口,作为子组件使用。
2、在父组件中引用上述子组件,同时传递数据给子组件。
本文在main.js中全局引入echarts,代码为:

import * as echarts from 'echarts';
Vue.prototype.$echarts = echarts

子组件echartscom.vue:

<template>
  <div class="echartsCommon">
    <div style="width: 80rem; height: 20rem" class="echarts" ref="piechart"></div>
  </div>
</template>
export default {
    name: 'echartscom',
    mounted() {
      this.drawCharts();
    },
    props: ['chartData'],  //接收父组件传来的数据
    methods: {
      drawCharts() {
        // console.log(this.$parent)
        let myChart = null;
        myChart = this.$echarts.init(this.$refs.piechart);
        myChart.setOption({
          tooltip: {
            trigger: 'item'
          },
          color: ['rgb(238,102,102)', 'rgb(145,202,117)', 'rgb(115,202,222)'], //自定义饼状块的颜色序列
          series: [{
            type: 'pie',
            radius: '75%',
            data: this.chartData,
            itemStyle: {
              normal: {
                label: {
                  show: true,
                  formatter: '{b} : {d}%',
                  fontSize:16
                }
              }
            }
          }]
        })
        window.addEventListener('resize', function() {
          myChart.resize();
        });
      },
    }
  }

父组件:
这里用v-for实现多次调用子组件

    <div>
      <b-card v-for="(item,index) in dataset" :key="index" class="mt-2" :sub-title="(index+1)+''+item[0]['question']">
        <b-card-text>
           <!--循环调用子组件,注意图表数据参数变量chartDatra,以及控制是否显示子组件的变量showFig -->
          <echartscom :chartData="item" v-if="showFig"></echartscom>
        </b-card-text>
      </b-card>
    </div>
  import echartscom from '@/components/echartscom.vue'
  export default {
    data() {
      return {
        dataset: [], //用于保存从后端获取的数据
        showFig: true, //用于根据后端数据确定是否调用子组件
      }
    },
    components: {
      echartscom,
    },
    methods: {
      getSta: function() {
        this.$axios.post("disciplineCollect.php", {
          act: 'sta',
          cpcname: this.cpcname
        }).then(rs => {
          if (rs.data.data[0]['answer'].length > 0) {
            this.showFig = true;
            for (let each of rs.data.data) {
              this.dataset.push(each.answer); 
            }
          } else {
            this.showFig = false;
            this.dataset = [];
            this.dismissCountDown = this.dismissSecs;
            this.alertType = "danger"
            this.alertMsg = "暂无数据。"
          }
        })
      }
    }
  }

需要注意的是,根据echarts饼状图的数据结构要求,后端从数据库中读取出来的数据需要格式化为形如 name、value这样的结构,sql语句中往往需要group by。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:20:29  更:2022-04-24 09:20:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:56:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码