解决vue一个页面中复用同一个echarts组件的问题


Posted in Javascript onJuly 19, 2020

因为页面中要用echarts图表的地方比较多,所以封装了组件,方便复用,如图:

我需要这样一个饼图,并且接下来在很多次地方要用到。

解决vue一个页面中复用同一个echarts组件的问题

直接复制官网的代码,再改改数据,需要用的时候直接拿来用。

但是接下来出现了一个问题:如果我在同一个页面多次使用这个组件,图表将不能正常显示。分析了一下, echarts通过id获取对象

// 基于准备好的dom,初始化echarts实例

var myChart = echarts.init(document.getElementById('main'));

当封装为组件使用的时候,id固定,同一个页面多次出现相同id,所以不能正常显示。

所以想出来以下解决方案:

举个栗子,如果我需要在一个页面中使用该组件两次,

在组件的data中,另外赋一个变量,暂且定为type。在父组件的data中,第一个图标的数据pieData1中添加一个type:1,第二个添加一个type:2

pieData1:{
 type: 1,
 title: '失败次数',
 list:[
  {value:335, name:'502 Bad Gateway'},
  {value:310, name:'404 Not Found'},
  {value:234, name:'无法连接服务器'},
  {value:135, name:'请求超时'},
  {value:1548, name:'Trace LOSS'},
 ],
 pieStyle: {
  width: '400px',
  height: '400px',
  float: 'right'
 }
 },
 
 pieData2:{
 type: 2,
 title: '失败次数',
 list:[
  {value:335, name:'502 Bad Gateway'},
  {value:310, name:'404 Not Found'},
  {value:234, name:'无法连接服务器'},
  {value:135, name:'请求超时'},
  {value:1548, name:'Trace LOSS'},
 ],
 pieStyle: {
  width: '400px',
  height: '400px',
  float: 'right'
 }
 }

接下来改需要在同一个vue页面中用两次的子组件:

html:

<div id="demo1" :style="pieStyle" v-if="pieData.type==1"></div>

<div id="demo2" :style="pieStyle" v-if="pieData.type==2"></div>

js:

var myPie 
 if(this.pieData.type==1){
 myPie = echarts.init(document.getElementById("demo1"));
 }else if(this.pieData.type==2){
 myPie = echarts.init(document.getElementById("demo2"));
 }

好了,问题解决了,效果图如下:

解决vue一个页面中复用同一个echarts组件的问题

如果想到其它方法再补充。

补充知识:vue中,封装的Echart组件被同一个页面多次调用,数据被覆盖问题解决办法。

大概率是echarts init有问题,是不是用class或id选择器选择元素来init了

错误版本:

解决vue一个页面中复用同一个echarts组件的问题

解决vue一个页面中复用同一个echarts组件的问题

正确版本:

解决vue一个页面中复用同一个echarts组件的问题

解决vue一个页面中复用同一个echarts组件的问题

以上这篇解决vue一个页面中复用同一个echarts组件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
为Yahoo! UI Extensions Grid增加内置的可编辑器
Mar 10 Javascript
javascript 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
Oct 10 Javascript
js日期相关函数总结分享
Oct 15 Javascript
jQuery代码实现发展历程时间轴特效
Jul 30 Javascript
jQuery操作动态生成的内容的方法
May 28 Javascript
JavaScript获取中英文混合字符串长度的方法示例
Feb 04 Javascript
js实现抽奖效果
Mar 27 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
Apr 30 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
Dec 19 Javascript
jquery绑定事件 bind和on的用法与区别分析
May 22 jQuery
浅谈vue单页面中有多个echarts图表时的公用代码写法
Jul 19 #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
You might like
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
详解php的socket通信
2015/08/11 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
Python grpc超时机制代码示例
2020/09/14 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
SQL中where和having的区别
2012/06/17 面试题
市场部专员岗位职责
2013/11/30 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
个人务虚会发言材料
2014/10/20 职场文书
公务员政审材料范文
2014/12/23 职场文书
工作检讨书大全
2015/01/26 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书