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 相关文章推荐
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 Javascript
Javascript遍历table中的元素示例代码
Jul 08 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
jQuery网页右侧广告跟随滚动代码分享
Apr 20 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
Dec 13 Javascript
三分钟带你玩转jQuery.noConflict()
Feb 15 Javascript
基于bootstrap插件实现autocomplete自动完成表单
May 07 Javascript
js与jquery分别实现tab标签页功能的方法
Nov 18 Javascript
Vue.use源码分析
Apr 22 Javascript
深入理解vue $refs的基本用法
Jul 13 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
Angular2整合其他插件的方法
Jan 20 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
利用PHP实现短域名互转
2013/07/05 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
pygame实现简易飞机大战
2018/09/11 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python利用opencv保存、播放视频
2020/11/02 Python
九年级历史教学反思
2014/01/27 职场文书
演讲稿格式
2014/04/30 职场文书
历史学专业求职信
2014/06/19 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫