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 相关文章推荐
window.open()弹出居中的窗口
Feb 01 Javascript
JS动态添加option和删除option(附实例代码)
Apr 01 Javascript
jQuery oLoader实现的加载图片和页面效果
Mar 14 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
微信小程序 Audio API详解及实例代码
Sep 30 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
Mar 30 Javascript
Angular 2父子组件之间共享服务通信的实现
Jul 04 Javascript
基于Bootstrap table组件实现多层表头的实例代码
Sep 07 Javascript
微信小程序录音与播放录音功能
Dec 25 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
vue监听滚动事件的方法
Dec 21 Vue.js
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编写大型网站问题集
2007/03/06 PHP
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php常用的url处理函数总结
2014/11/19 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
vue cli 全面解析
2018/02/28 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
python开发简易版在线音乐播放器
2017/03/03 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
python 字典套字典或列表的示例
2019/12/16 Python
python画环形图的方法
2020/03/25 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
《雾凇》教学反思
2014/02/17 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
努力工作保证书
2015/02/28 职场文书
初中毕业生自我评价
2015/03/02 职场文书