浅谈vue单页面中有多个echarts图表时的公用代码写法


Posted in Javascript onJuly 19, 2020

html中:

<div class="charts1"/>
  <div class="charts2"/>
  <div class="charts3"/>
  <div class="charts4"/>
  <div class="charts5"/>
  <div class="charts6"/>
  <div class="charts7"/>

数据处理就不用提了。嗯,直接画图:

// 画 折线图
 drawLine() {
 // 数据处理的方法
  this.dealEchartsData()
  var myChartsArr = []
  for (var i = 1; i <= 7; i++) {
  this.myCharts = this.$echarts.init(document.getElementsByClassName('charts' + i)[0])
  myChartsArr.push(this.myCharts)
  var option = this.commonOption(this.myCharts, this.adnormalTypeSummery[i - 1], this.destArrAll[i - 1])
  // 为echarts对象加载数据 true 防止echarts数据叠加!!!
  this.myCharts.setOption(option, true)
  }
  window.onresize = function() { // 自适应
  for (var j = 0; j < myChartsArr.length; j++) {
   if (myChartsArr[j].resize()) {
   myChartsArr[j].resize()
   }
  }
  }
 },

公用部分:

// option 主体
 commonOption(myCharts, titleText, destData) {
  var option = {
  title: {
   text: titleText
  },
  tooltip: {
   trigger: 'axis',
   confine: true
  },
  legend: {
   type: 'scroll',
   width: '90%',
   top: '13%'
  },
  grid: {
   left: '3%',
   right: '4%',
   bottom: '2%',
   containLabel: true
  },
  toolbox: {
   right: '20',
   feature: {
   saveAsImage: {}
   }
  },
  xAxis: {
   type: 'category',
   boundaryGap: false,
   data: this.monthName
  },
  yAxis: {
   type: 'value'
  },
  series: destData
  }
  return option
 }

离开该页面时候摧毁:

destroyed() {
 if (this.myCharts) {
  this.myCharts.clear()
  this.myCharts.dispose()
  window.onresize = null
 }

补充知识:Vue + Echarts 图表展示 及 动态渲染

准备工作

安装echarts依赖

npm install echarts --save-dev

引入

(main.js)
import echarts from 'echarts'
Vue.prototype.$echarts = echarts;

开始撸代码

<template>
 <div class="peopleWrap">
 <h3>
  <i class="el-icon-position"></i>
  出入人员总数{{peopleSumTotal}}
 </h3>
 <div id="peopleSum" style="width: 180px;height: 270px"></div>
 </div>
</template>
<script>
export default {
// 接受父组件传来的参数【父传子props】
 props: ["peopleSumTotal"], 
 data() {
 return {
  peopleSumTotalArr: []
 };
 },
 watch: {
 // 监听参数变化
 peopleSumTotal: {
  handler(newVal, oldVal) {
  if (newVal != 0) {
   console.log(newVal);
   this.peopleSum(newVal);
  }
  }
 }
 },
 methods: {
 peopleSum(newVal) {
 // 引入 echarts
  var echarts = require("echarts");
  let peopleSum = echarts.init(document.getElementById("peopleSum"));
  //echsrts点击事件
  peopleSum.on("click", function(param) {
  console.log(param);
  console.log(param.data.name);
  console.log(param.data.value);
  console.log(param.data.userDefined);
  //$emit的第一个为传的参的名字,第二个为传的值 【子传父 this.$emit】
  _this.$emit("peopleSumtoparent", param.data); 
  });

//接受动态数据时需要在 this.$nextTick(()=>{})展示
  this.$nextTick(() => {
  let obj = {};
  obj.value = newVal;
  obj.name = newVal;
  this.peopleSumTotalArr.push(obj);

  let option = {
   legend: {
   orient: "vertical",
   left: 10,
   data: [""]
   },
   series: [
   {
    type: "pie",
    radius: ["50%", "70%"],
    avoidLabelOverlap: false,
    itemStyle: {
    // 普通样式。
    normal: {
     // 点的颜色。
     color: "#6998f7"
    },
    // 高亮样式。
    emphasis: {
     // 高亮时点的颜色。
     color: "#6998f7"
    }
    },
    label: {
    normal: {
     show: true,
     position: "center",
     textStyle: {
     fontSize: "20"
     }
    }
    },
    labelLine: {
    normal: {
     show: false
    }
    },
    data: this.peopleSumTotalArr //动态图表展示
   }
   ]
  };
  console.log("option", option);
  peopleSum.setOption(option);
  });
 }
 },
 mounted() {}
};
</script>
<style lang="scss" scoped>
</style>

以上这篇浅谈vue单页面中有多个echarts图表时的公用代码写法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript Onunload与Onbeforeunload使用小结
Dec 31 Javascript
JavaScript 对Cookie 操作的封装小结
Dec 31 Javascript
用原生JS获取CLASS对象(很简单实用)
Oct 15 Javascript
JS中对Cookie的操作详解
Aug 05 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
Jan 20 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
Jun 26 Javascript
微信JSAPI Ticket接口签名详解
Jun 28 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
利用Blob进行文件上传的完整步骤
Aug 02 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
JavaScript隐式类型转换代码实例
May 29 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
Jul 19 #Javascript
JavaScript中reduce()的5个基本用法示例
Jul 19 #Javascript
JS中作用域以及变量范围分析
Jul 18 #Javascript
JS中的变量作用域(console版)
Jul 18 #Javascript
js里面的变量范围分享
Jul 18 #Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 #Javascript
深入理解 ES6中的 Reflect用法
Jul 18 #Javascript
You might like
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
文字幻灯片
2006/06/26 Javascript
用ADODB.Stream转换
2007/01/22 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
村创先争优活动总结
2014/08/28 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
实习生个人总结范文
2015/02/28 职场文书
2015初中团委工作总结
2015/07/28 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis