解决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 相关文章推荐
javascript+xml技术实现分页浏览
Jul 27 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
Mar 24 Javascript
javascript简单实现滑动菜单效果的方法
Jul 27 Javascript
AngularJs学习第八篇 过滤器filter创建
Jun 08 Javascript
jQuery文字提示与图片提示效果实现方法
Jul 04 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
Feb 08 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
Feb 10 Javascript
vue axios整合使用全攻略
May 24 Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
Vue如何获取数据列表展示
Dec 11 Javascript
jquery实现烟花效果(面向对象)
Mar 10 jQuery
vue watch监控对象的简单方法示例
Jan 07 Vue.js
浅谈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中常用的预定义变量小结
2012/05/09 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
php文件读取方法实例分析
2015/06/20 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
PHP实现微信对账单处理
2018/10/01 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
jquery移动点击的项目到列表最顶端的方法
2015/06/24 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
Pyqt5自适应布局实例
2019/12/13 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
中专毕业生自荐信范文
2013/11/28 职场文书
公共场所标语
2014/06/30 职场文书
党员创先争优心得体会
2014/09/11 职场文书
公司离职证明样本
2014/09/13 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
通知怎么写?
2019/04/17 职场文书