解决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 相关文章推荐
Jquery 表格合并的问题分享
Sep 17 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
Jan 15 Javascript
jquery图片放大镜功能的实例代码
Mar 26 Javascript
Jquery插件easyUi表单验证提交(示例代码)
Dec 30 Javascript
php的文件上传入门教程(实例讲解)
Apr 10 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
Jun 05 Javascript
js中数组排序sort方法的原理分析
Nov 20 Javascript
基于JavaScript实现本地图片预览
Feb 08 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
Feb 16 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 09 Javascript
详解ES6中class的实现原理
Oct 03 Javascript
浅谈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 adodb连接不同数据库
2009/03/19 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
基于vue.js实现的分页
2018/03/13 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
js前端面试之同步与异步问题详解
2019/04/03 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
Python实现的石头剪子布代码分享
2014/08/22 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
深入理解Python中的内置常量
2017/05/20 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
Python入门之后再看点什么好?
2018/03/05 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
python pygame实现2048游戏
2018/11/20 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
2014年德育工作总结
2014/11/20 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
mysq启动失败问题及场景分析
2021/07/15 MySQL