浅谈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 相关文章推荐
16个最流行的JavaScript框架[推荐]
May 29 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
浅谈JavaScript中的对象及Promise对象的实现
Nov 15 Javascript
Bootstrap下拉菜单效果实例代码分享
Jun 30 Javascript
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
js构建二叉树进行数值数组的去重与优化详解
Mar 26 Javascript
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
Nov 01 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
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
ThinkPHP之getField详解
2014/06/20 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
Jquery 弹出层插件实现代码
2009/10/24 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
Python Requests安装与简单运用
2016/04/07 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
CSS3 旋转立方体问题详解
2020/01/09 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
酒店开业策划方案
2014/06/02 职场文书
2014年居委会工作总结
2014/12/09 职场文书
安装工程师岗位职责
2015/02/13 职场文书
党支部审查意见
2015/06/02 职场文书
Python预测分词的实现
2021/06/18 Python
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
CentOS MySql8 远程连接实战
2022/04/19 MySQL