• 小程序中使用echarts及使用的坑


    微信小程序使用echarts,总结了如下两大坑点

    1. 如何使用?如何在page中定义,如何异步获取数据,渲染?
    2. 如何解决层级关系呢?如何进行canvas转成图片?

    如何使用?

    在echars官网,官方给出了实例,这就是最基本的使用

    如何在page中定义呢?如何异步获取数据,渲染?下面代码才是重点

    import * as echarts from '../../ec-canvas/echarts';
    var chart = null;
    var chartObj, chartPromise;
    
    Page({
      data: {
        ec: {
          onInit: function (canvas, width, height, dpr) {
            chart = echarts.init(canvas, null, {
               width,
              height: height,
              devicePixelRatio: dpr // new
            });
            canvas.setChart(chart);
            chartObj(chart)
            return chart;
          },
          // lazyLoad: true
        },
      },
    
      onLoad() {
        chartPromise = new Promise((r,j) => {
          chartObj = r
        })
      
      const data = ['
    假装请求接口,获取data'];
       this.drawChart(data);//在这里异步获取数据,渲染echarts  },
      drawChart(data){
          const option = {
           这里是你的option配置
          };
          chartPromise.then(chart => {
            chart.setOption(option);
         //这里可以转成图片,解决层级问题
        
         setTimeout(()=>{
              this.handleCanvarToImg(this)//这个方法在下面
            },2000)
            return chart
          })
          
        },
    
    })

    如何解决层级关系呢?如何进行canvas转成图片?

    可以把echarts生成的图片,然后需要层级的时候,转成图片,ec-canvas设置透明度为0

     <view class="ec-box">
          <ec-canvas id="mychart" canvas-id="mychart-bar" ec="{{ ec }}" style="opacity:{{show ? 0 : 1}}"></ec-canvas>
          <image wx:if="{{show}}" src="{{chartImg}}"></image>
        </view>
    // 转图片
        handleCanvarToImg(that) {
          let canvas = this.selectComponent('#mychart')
          if(!canvas){
            return
          }
          canvas.canvasToTempFilePath({
            x: 0,
            y: 0,
             369,
            height: 253,
            canvasId: 'mychart',
            success: function(res) {
              that.setData({ chartImg: res.tempFilePath,showCanvas:true});
            }
          },that);
        },

    这就能解决上面的两大坑了

    对了还有一个小点要注意,ec-canvas引用的echarts.js比较大,在小程序开发者工具里面,大于500k,es6转es5就会报错,所以可以从官网自定义构建以减小文件大小

  • 相关阅读:
    R绘图学习笔记
    SVM与LR的比较
    精简android4.2
    vbox下android分辨率设置
    centos7命令
    mysql设置编码
    virutalbox虚拟机硬盘扩容
    spring boot学习
    SQL Server 2012清除连接过的服务器名称历史
    android AutoCompleteTextView和Spinner选中项加亮
  • 原文地址:https://www.cnblogs.com/cqy1125/p/15012131.html
Copyright © 2020-2023  润新知