vue.js+Echarts开发图表放大缩小功能实例


Posted in Javascript onJune 09, 2017

最近使用echarts来开发某系统的图表功能,先申明我以前用的ext.js,ext.js对图表有自己的一套组件,用起来也很方便。但是由于ext.js过于臃肿,公司决定使用echarts来开发图表功能。当我们使用的时候才悲催的发现,echart绘制之后,不能随着容器div的大小而变化。而我们所开发的图表是需要有放大缩小功能,于是在网上找了很久,也没有找到合适的答案,大部分是通过监听窗口大小改变事件来设置,然而并不是我们所需要的。于是自己用了一点点时间,了解了为何echarts不能重新渲染,原来是在容器div里面设置了标记,每个div容器只能被渲染一次。知道原因之后,就容易了,就写了一个简单的demo。希望可以帮到有需要的同学。

html代码:

<!doctype html>
<html>
<head>
  <title>vue+chart</title>
  <script src="echarts.min.js"></script>
  <script src="vue.js"></script>
  <style>
    .button{
      float:left;
      width:150px;
      height:60px;
      color:#CC3333;
      border:2px solid #CC3333;
      background-color:#3399CC;
      line-height:60px;
      text-align:center;
      font-size:36px;
    }
    .button:hover{
      float:left;
      width:150px;
      height:60px;
      color:#3399CC;
      border:2px solid #3399CC;
      background-color:#CC3333;
      line-height:60px;
      text-align:center;
      font-size:36px;
    }
  
    .chart{
      margin:0 auto;
    }
    #but{
      width:310px;
      margin:0 auto;
    }
  </style>

</head>

<body>
  <div id="app">
    <div id="panel">
      <div class="chart" id="main" style="width:300px;height:300px"></div>
    </div>
    <div id="but">
      <div id="add" class="button" @click="add">放大</div>
      <div id="reduce" class="button" @click="reduce">缩小</div>
    </div>
  </div>
</body>
</html>

js代码:

var vm=new Vue({
        el:"#app",
        data:{
          size:300,
        },
         computed: {
          style: function () {
           return "width:"+this.width+"px;height:"+this.height+"px"
          }
         },
         methods:{
            add:function(){
              if(this.size<900){
                this.size=this.size+50;}
                else{
                this.size=900;
                }

              },
            reduce:function(){
              if(this.size>300){
              this.size=this.size-50;}
              else{
              this.size=300;
              }
            }
         }
      })
    var myChart = echarts.init(document.getElementById('main'));
    var option = {
      title: {
        text: 'ECharts 入门'
      },
      tooltip: {},
      legend: {
        data:['销量']
      },
      xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      }]
    };
    myChart.setOption(option);
      // 基于准备好的dom,初始化echarts实例
    vm.$watch("size",function(newVal, oldVal){
      var dom=document.getElementById('panel')
      dom.innerHTML='<div class="chart" id="main" style="width:'+newVal+'px;height:'+newVal+'px"></div>';
      var myChart = echarts.init(document.getElementById('main'));
      myChart.setOption(option);
    })

vue.js+Echarts开发图表放大缩小功能实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现读取txt文档的脚本
Jul 20 Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
javascript实现点击提交按钮后显示loading的方法
Jul 03 Javascript
纯CSS3代码实现滑动开关效果
Aug 19 Javascript
深入浅析AngularJS和DataModel
Feb 16 Javascript
Bootstrap每天必学之模态框(Modal)插件
Apr 26 Javascript
详解前后端分离之VueJS前端
May 24 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
Aug 12 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
手把手教你实现 Promise的使用方法
Sep 02 Javascript
vue2 中如何实现动态表单增删改查实例
Jun 09 #Javascript
JS创建Tag标签的方法详解
Jun 09 #Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
Jun 09 #Javascript
JS实现的随机排序功能算法示例
Jun 09 #Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 #jQuery
JQuery.dataTables表格插件添加跳转到指定页
Jun 09 #jQuery
基于代数方程库Algebra.js解二元一次方程功能示例
Jun 09 #Javascript
You might like
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
javascript简单写的判断电话号码实例
2017/05/24 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
八大排序算法的Python实现
2021/01/28 Python
python urllib爬虫模块使用解析
2019/09/05 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
python3正则模块re的使用方法详解
2020/02/11 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
python 决策树算法的实现
2020/10/09 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
校庆团日活动总结
2014/08/28 职场文书
先进个人评语大全
2015/01/04 职场文书
初中教师个人总结
2015/02/10 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
初中语文教学随笔
2015/08/15 职场文书
网络研修心得体会
2016/01/08 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
sql字段解析器的实现示例
2021/06/23 SQL Server
MSSQL基本语法操作
2022/04/11 SQL Server