解决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 constructor和instanceof,JSOO中的一对欢喜冤家
May 25 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
Nov 25 Javascript
javascript创建和存储cookie示例
Jan 07 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
简单实现IONIC购物车功能
Jan 10 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 jQuery
详解JS数据类型的值拷贝函数(深拷贝)
Jul 13 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
Apr 08 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
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
python图像处理之镜像实现方法
2015/05/30 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
资深生产主管自我评价
2013/09/22 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
酒鬼酒广告词
2014/03/21 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS