在vue中使用Echarts利用watch做动态数据渲染操作


Posted in Javascript onJuly 20, 2020

依旧直接上代码~

首先安装引入Echarts,我是直接把Echarts挂到VUE全局变量上了

//引入echarts
import Vue from 'vue';
import echarts from 'echarts';
Vue.prototype.$echarts = echarts;
<template>
 <div class="demo-container">
  <div ref="chart_wrap" class="chart_wrap"></div>
 </div>
</template>
<script>
export default {
 name: "demo",
 computed: {},
 data() {
  return {
   seriesData: []
  };
 },
 created() {},
 mounted() {
  this.initCharts();
  setTimeout(() => {
   this.seriesData.push({
    name: "销量",
    type: "bar",
    data: [5, 20, 36, 10, 10, 20]
   });
  }, 5000);
 },
 watch: {
  seriesData(val, oldVal) {
   console.log(1111, val, oldVal);
   this.setOptions(val);
  }
 },
 methods: {
  initCharts() {
   this.chart = this.$echarts.init(this.$refs.chart_wrap);
   this.setOptions();
  },
  setOptions(series) {
   console.log(22222,this.chart,series);
   this.chart.setOption({
    title: {
     text: "ECharts 入门示例"
    },
    tooltip: {},
    legend: {
     data: ["销量"]
    },
    xAxis: {
     data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
    },
    yAxis: {},
    series: series
   });
  }
 }
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.chart_wrap {
 height: 400px;
}
</style>

补充知识:echarts-循环生成图

1、问题背景

利用for循环生产多个气泡图,并且每个气泡都可以点击

2、实现源码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>echarts-循环生成图</title>
		<link rel="shortcut icon" href="../js/echarts-2.2.7/doc/asset/ico/favicon.png">
		<script type="text/javascript" src="../js/echarts-2.2.7/doc/asset/js/jquery.min.js" ></script>
		<script type="text/javascript" src="../js/echarts-2.2.7/doc/example/www2/js/echarts-all.js" ></script>
		
		<style>
			body,html,#div-chart{
				width: 99%;
				height: 100%;
				font-family: "微软雅黑";
				font-size: 12px;
			}
			.chart{
				width: 1200px;
				height: 100px;
			}
		</style>
		<script>
			$(document).ready(function(){
				buildChart();
				buildChartJS();
			});
			
			function buildChart()
			{
				$("#div-chart").empty();
				var chart = "";
				for(var i=0;i<8;i++)
				{
					chart += "<div id='chart"+i+"' class='chart'></div>"; 
				}
				$("#div-chart").append(chart);
			}
			
			function buildChartJS()
			{
				for(var i=0;i<8;i++)
				{
					var chart = document.getElementById('chart'+i); 
	        var echart = echarts.init(chart); 
	         
	        var option = {
					  legend: {
					    data:['scatter1'],
					    show:false
					  },
					  splitLine:{
					
  show:false
					
 },
					  grid:{
					    borderWidth:0
					  },
					  xAxis : [
					    {
					    	show:false,
					      type : 'value',
					      splitNumber: 2,
					      scale: true,
					      axisLine:{
					      	show:false
					      },
					      splitLine:{
							

  show:false
							
 },
							  axisTick:{
							  	 show:false
							  }
					    }
					  ],
					  yAxis : [
					    {
					    	show:false,
					      type : 'value',
					      splitNumber: 2,
					      scale: true,
					      axisLine:{
					      	show:false
					      },
					      splitLine:{
							

  show:false
							
 }
					    }
					  ],
					  series : [
					    {
					      name:'scatter1',
					      type:'scatter',
					      symbol: 'emptyCircle',
					      symbolSize: 20,
					      itemStyle : { 
					      	normal: {
					      		color:'#0068B7',
					      		label:{
					      			show: true, 
					      			position: 'inside',
							      	textStyle : {
					              fontSize : 26,
					              fontFamily : '微软雅黑',
					              color:'#0068B7'
					            }
					      		}
					      	}
					      },
					      data: randomDataArray()
					    }
					  ]
					}; 
	         
          function eConsole(param) 
          {
          	alert(param.value);
            console.dir(param);
          }
          echart.on("click", eConsole);
	        echart.setOption(option); 
				}
			}
			
			function randomDataArray() 
			{
			  var d = [];
			  var arr = [3,5,7,9,10,1,2,4,8,6];
			  var len = 10;
			  for(var i=0;i<len;i++)
			  {
			  	d.push([i+1,0,arr[i],]);
			  }
			  
			  return d;
			}
		</script>
	</head>
	<body>
		<div id="div-chart">
			
		</div>
	</body>
</html>

3、实现结果

在vue中使用Echarts利用watch做动态数据渲染操作

以上这篇在vue中使用Echarts利用watch做动态数据渲染操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现ASP分页函数 HTML分页函数
Sep 22 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
JS动态添加Table的TR,TD实现方法
Jan 28 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
Jan 30 Javascript
浅谈js中变量初始化
Feb 03 Javascript
JavaScript删除数组元素的方法
Mar 20 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
Jun 14 Javascript
vue实现文件上传功能
Aug 13 Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
Sep 05 Javascript
vue-router定义元信息meta操作
Dec 07 Vue.js
vue-router之解决addRoutes使用遇到的坑
Jul 19 #Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 #Javascript
解决vue项目router切换太慢问题
Jul 19 #Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
Jul 19 #Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 #Javascript
解决vue中el-tab-pane切换的问题
Jul 19 #Javascript
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 #Javascript
You might like
thinkphp控制器调度使用示例
2014/02/24 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
Python中%r和%s的详解及区别
2017/03/16 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
python 调用有道api接口的方法
2019/01/03 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
init进程的作用
2015/08/20 面试题
医药销售自荐书
2014/05/29 职场文书
MySQL Server 层四个日志
2022/03/31 MySQL