echarts 自带的自适应方法  resize()

具体用法:

let xxEcharts = this.$echarts.init(document.getElementById('xxx'))
xxEcharts.setOption(xxxx)  // 参数是 echarts 的option对象
window.onresize = xxEcharts.resize
 
但是,问题来了,同一个页面使用多个echarts 的时候,window.onresize = xxEcharts.resize  只对最后一个echarts有效果
这时候换种写法
window.onresize = function(){
  xxBarChart.resize()
  xxxBarChart.resize()
  xxChart.resize()
  xxxChart.resize()
}
好了,现在所有的 echarts都可以自适应了,
然而,还没完,还是会出现各种问题,导致自适应出问题,现在我们想想,如何手动触发 resize
首先,肯定要把 echarts变量全局化。
我现在 vue的data中设置 xxEcharts : this.$echarts.init(document.getElementById('xxx'))
然而报错,没办法,
再试试在计算函数中声明   
computed:{
  xxBarChart(){
    return this.$echarts.init(document.getElementById('myChart_ln'))
  }
}
再试试,竟然可以了,虽然不知道原理,但是现在我们可以手动调起  this.xxBarChart.resize()了
/////////////////////////////////////////////////////////////////////  我是华丽丽的分割线  ////////////////////////////////////////////////////////////////////////////////////////////////////
次日新加内容:
不知道昨天为啥可以了,今天在使用的时候,华丽丽的报错了,错误很简单,  
在使用 window.onresize = function(){ this.xxcharts.resize() }
的时候,this指向了event对象或者window对象,而不是我们的 vue对象
 
此时,要改变当前方法的作用域,我第一想到的是call和bind,未试
 
我使用了另外一种方法,我在 data 中定义一个属性,叫windowSize,在 methods 中定义了一个方法 windowSizeChange,在windowSizeChange中 ,设置 windowSize 的值,然后在 watch 中 监测 windowSize 并 执行 this.xxcharts.resize()的操作。经过测试,可以解决问题,
 
然而以上仍然无法解决,echarts在子组件中且在同一个页面被调用多次的时候,无法自适应的问题
解决办法大概是,使用 全局状态监测,比如 使用 vuex,,在 app.vue中 使用 window.resize ,整个项目只使用一次,做监测,大致是这个思路。
 
 

vue 中使用 echarts 自适应问题的更多相关文章

  1. 在vue中使用echarts图表

    在vue中使用echarts图表   转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9815290.html 安装vue依赖 使用npm npm instal ...

  2. 在vue中调用echarts中的地图散点图~

    首先!当然是在vue中引入echarts! 命令行  npm install echarts --save 在main.js文件中里引入        import echarts from 'ech ...

  3. Vue中使用ECharts画散点图加均值线与阴影区域

    [本文出自天外归云的博客园] 需求 1. Vue中使用ECharts画散点图 2. 在图中加入加均值线 3. 在图中标注出阴影区域 实现 实现这个需求,要明确两点: 1. 知道如何在vue中使用ech ...

  4. 记录下vue 中引用echarts 出现 "TypeError: Cannot read property 'getAttribute' of undefined"问题

    今天做项目,用echarts展示数据 ,自己测试 先测试 了下.写的代码html: <div ref="myChart" style="height:300px;w ...

  5. vue中使用echarts(vue+vue-cli+axios+jsonp+echarts)

    一.安装echarts: cnpm i echarts -D 二.在vue-cli的main.js文件中引用echarts: import charts from 'echarts' Vue.prot ...

  6. VUE中集成echarts时 getAttribute of null错误

    错误 错误场景一: 错误提示: 在运行Vue项目时出现了上述错误,出现该错误的原因是Echarts的图形容器还未生成就对其进行了初始化所造成的,代码如下: // 基于准备好的dom,初始化echart ...

  7. vue中使用echarts的两种方法

    在vue中使用echarts有两种方法一.第一种方法1.通过npm获取echarts npm install echarts --save 2.在vue项目中引入echarts 在 main.js 中 ...

  8. 在vue中使用Echarts画曲线图(异步加载数据)

    现实的工作中, 数据不可能写死的,所有的数据都应该通过发送请求进行获取. 所以本项目的需求是请求服务器获得二维数组,并生成曲线图.曲线图的横纵坐标均从获得的数据中取得. Echarts官方文档: ht ...

  9. vue中添加echarts

    方法一:全局引入echarts 步骤: 1.全局安装 echarts依赖.        cnpm install echarts -- save 2.引入echarts模块,在Vue项目的main. ...

随机推荐

  1. SpringBoot 集成JUnit

    项目太大,不好直接测整个项目,一般都是切割成多个单元,单独测试,即单元测试. 直接在原项目上测试,会把项目改得乱七八糟的,一般是单独写测试代码. 进行单元测试,这就需要集成JUnit. (1)在pom ...

  2. Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别

    1.Period final修饰,线程安全,ISO-8601日历系统中基于日期的时间量,例如2年3个月4天. 主要属性:年数,月数,天数. /** * The number of years. */ ...

  3. golang的io.copy使用

    net/http 下载 在golang中,如果我们要下载一个文件,最简单的就是先用http.get()方法创建一个远程的请求后,后面可使用ioutil.WriteFile()等将请求内容直接写到文件中 ...

  4. ios中时间倒计时

    博客地址 https://github.com/sundayios/SQCountTimeDown.git

  5. Maven 项目中使用 logback

    添加依赖 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logsta ...

  6. linux#自启动脚本

    编写脚本: /etc/init.d/myscriptname # chkconfig: # description: 描述信息,描述信息,上面的90表示在众多开机启动脚本的优先级,10表示在众多关机启 ...

  7. 5.使用Redis+Flask维护动态Cookies池

    1.为什么要用Cookies池? 网站需要登录才可爬取,例如新浪微博 爬取过程中如果频率过高会导致封号 需要维护多个账号的Cookies池实现大规模爬取 2.Cookies池的要求 自动登录更新 定时 ...

  8. Python 基础之集合相关操作与函数和字典相关函数

    一:集合相关操作与相关函数 1.集合相关操作(交叉并补) (1)intersection() 交集 set1 = {"one","two","thre ...

  9. Press Key关键字用法

    语法:Press Key  locator   按键编码 press key关键字后面的键位对应ascii码实际为16进制格式 NULL = '\ue000'CANCEL = '\ue001'  # ...

  10. 以及Hibernate和Mybatis区别

    ORM框架? Object Relational Mapping,对象-关系映射. 项目中的业务实体有两种表现形式:对象和关系数据,即在内存中表现为对象,在数据库中表现为关系数据. 为什么需要ORM框 ...