首页 > 其他 > 详细

echarts for wechat

时间:2021-04-04 22:28:12      阅读:25      评论:0      收藏:0      [点我收藏+]

最基本实现

目录结构,需要ec-canvas文件夹,然后在chart.js中引入
技术分享图片

chart.js:

  1. js中的Page data中的内容返回给wxml,让其显示
  2. initChart中let option 以上是固定的内容
  3. let option填的是具体的数据,x轴、y轴还有数值(可以option提取出来写一个方法)
  4. chart.setOption,将数据融入到chart中最后再返回chart
import * as echarts from ‘../../ec-canvas/echarts‘;

function initChart(canvas, width, height, dpr) {
  const chart = echarts.init(canvas, null, {
    width: width,
    height: height,
    devicePixelRatio: dpr // new
  });
  canvas.setChart(chart);

  let option = {
    xAxis: {
        type: ‘category‘,
        data: [‘Mon‘, ‘Tue‘, ‘Wed‘, ‘Thu‘, ‘Fri‘, ‘Sat‘, ‘Sun‘]
    },
    yAxis: {
        type: ‘value‘
    },
    series: [{
        data: [150, 230, 224, 218, 135, 147, 260],
        type: ‘bar‘
    }]
  };

  chart.setOption(option);
  return chart;
}

Page({
  data: {
    ec: {
      onInit: initChart
    }
  }
});

<view class="container">
  <view class="my-chart">
    <ec-canvas id="mychart-dom-recite" canvas-id="mychart-recite" ec="{{ec}}"></ec-canvas>
  </view>
</view>

延迟加载

与最基本有什么差异呢?

  1. data数据变了,因为要延迟加载,不再是直接将数据用来传递
  2. onLoad中两行代码,一是通过id获取wxml的组件,二是调用接下来写的init方法,其实就是将原本的init包装了一下
  3. init
    a. 用到了上面id获取wxml的组件,然后再用组基本的init方法
    b. 和最基本说的一样,只不过将option提取了出来,并且执行了chart.setOption()
    c. this.chart = chart

到时候可以在onLoad中执行init前调用接口获取数据,传递进去,再展示

import * as echarts from ‘../../ec-canvas/echarts‘;

Page({
  data: {
    ec: {
      // 将 lazyLoad 设为 true 后,需要手动初始化图表
      lazyLoad: true
    }
  },
  onLoad: function () {
    // 获取组件
    this.ecComponent = this.selectComponent(‘#mychart-dom-recite‘);
    this.init();
  },

  // 点击按钮后初始化图表
  init() {
    this.ecComponent.init((canvas, width, height, dpr) => {
      // 获取组件的 canvas、width、height 后的回调函数
      // 在这里初始化图表
      const chart = echarts.init(canvas, null, {
        width: width,
        height: height,
        devicePixelRatio: dpr // new
      });
      setOption(chart);

      // 将图表实例绑定到 this 上,可以在其他成员函数中访问
      this.chart = chart;

      return chart;
    });
  }
});

function setOption(chart) {
  let option = {
    xAxis: {
        type: ‘category‘,
        data: [‘Mon‘, ‘Tue‘, ‘Wed‘, ‘Thu‘, ‘Fri‘, ‘Sat‘, ‘Sun‘]
    },
    yAxis: {
        type: ‘value‘
    },
    series: [{
        data: [150, 230, 224, 218, 135, 147, 260],
        type: ‘bar‘
    }]
  };
  chart.setOption(option);
}

echarts for wechat

原文:https://www.cnblogs.com/lwxx/p/14616820.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!