微信小程序中echarts动态加载数据

前期准备

需求:需要在微信小程序中动态显示图表。

经查询,选择使用echarts插件。

echarts官网中获取ec-canvas组件,放入至微信小程序中

实现如下:

完整实例:dynamic-echarts-demo

wxml

<ec-canvas id="mychart" canvas-id="mychart-line" ec="{{ ec }}"></ec-canvas>

js

import * as echarts from '../../../utils/ec-canvas/echarts'; //引入echarts.js
var dataList = [];
Page({
	/**
   * 页面的初始数据
   */
  data: {
    ec: {
      lazyLoad: true // 延迟加载
    },
  }
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.echartsComponnet = this.selectComponent('#mychart');
    this.getData(); //获取数据
  },
  getData: function () {
  	/**
  	 * 此处的操作:
  	 * 获取数据json
  	 */
  	wx.request({
  	  url: url, //仅为示例,并非真实的接口地址
      data: data,
      method: 'POST',
      header: { 'content-type': 'application/x-www-form-urlencoded' },
      success: (res) => {
      	dataList = res.data;
  		this.init_echarts();//初始化图表
      }
	});
  },
  //初始化图表
  init_echarts: function () {
    this.echartsComponnet.init((canvas, width, height) => {
      // 初始化图表
      const Chart = echarts.init(canvas, null, {
        width: width,
        height: height
      });
      Chart.setOption(this.getOption());
      // 注意这里一定要返回 chart 实例,否则会影响事件处理等
      return Chart;
    });
  },
  getOption: function () {
    //时间显示范围
    var anchor = [
      { name: weekDate, value: [weekDate, 0] },  // 开始
      { name: nowDate, value: [nowDate, 0] }  // 结束
    ];
    // 指定图表的配置项和数据
    var option = {
    	xAxis: {
	        type: 'category',
	        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
	    },
	    yAxis: {
	        type: 'value'
	    },
	    series: [{
	        data: dataList,
	        type: 'line'
	    }]
    }
    return option;
  },

})

-----------20181015更新-----------

发现现存问题:切换图表数据时,数据会回闪。

原因:每次切换数据时,都创建echarts实例,但是上一个实例未销毁。故现在更改为只创建一个echarts实例,每次切换数据时,只重新setOption,并在此操作前clear图表。新的代码如下:

import * as echarts from '../../utils/ec-canvas/echarts'; //引入echarts.js
var dataList = [];
var k = 0;
var Chart = null;
Page({
	/**
   * 页面的初始数据
   */
  data: {
    ec: {
      lazyLoad: true // 延迟加载
    },
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.echartsComponnet = this.selectComponent('#mychart');
    this.getData(); //获取数据
  },
  getData: function () {
  	/**
  	 * 此处的操作:
  	 * 获取数据json
  	 */
    if(k % 2){
      dataList = [1, 2, 3, 4, 5, 6];
    }else{
      dataList = [7, 6, 9, 2, 5, 6];
    }
    k++;
    //如果是第一次绘制
    if (!Chart){
      this.init_echarts(); //初始化图表
    }else{
      this.setOption(Chart); //更新数据
    }
  /*  wx.request({
      url: url, //仅为示例,并非真实的接口地址
      data: data,
      method: 'POST',
      header: { 'content-type': 'application/x-www-form-urlencoded' },
      success: (res) => {
        dataList = res.data;
        this.init_echarts();//初始化图表
      }
    });  */
  },
  //初始化图表
  init_echarts: function () {
    this.echartsComponnet.init((canvas, width, height) => {
      // 初始化图表
      Chart = echarts.init(canvas, null, {
        width: width,
        height: height
      });
      // Chart.setOption(this.getOption());
      this.setOption(Chart);
      // 注意这里一定要返回 chart 实例,否则会影响事件处理等
      return Chart;
    });
  },
  setOption: function (Chart) {
    Chart.clear();  // 清除
    Chart.setOption(this.getOption());  //获取新数据
  },
  getOption: function () {
    // 指定图表的配置项和数据
    var option = {
      xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
      },
      yAxis: {
        type: 'value'
      },
      series: [{
        data: dataList,
        type: 'line'
      }]
    }
    return option;
  },

})

 

 

  • 23
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
### 回答1: 在微信小程序使用echarts包进行分包的步骤如下: 1. 首先,在小程序项目的根目录下创建一个名为`echarts`的文件夹,用于存放echarts相关的文件。 2. 在`echarts`文件夹,创建一个名为`src`的文件夹,用于存放echarts的源代码。可以从echarts官网(https://echarts.apache.org/zh/download.html)下载最新版本的echarts,并将其的`echarts.min.js`拷贝到`src`文件夹。 3. 在`echarts`文件夹,创建一个名为`components`的文件夹,用于存放echarts的组件。 4. 在`components`文件夹,创建一个名为`ec-canvas`的文件夹,用于存放echarts的canvas组件。这里可以参考微信小程序官方文档关于`canvas`的使用(https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html)。 5. 在`ec-canvas`文件夹,创建一个名为`ec-canvas.js`的文件,用于定义echarts的canvas组件。可以参考echarts官方提供的示例代码(https://github.com/ecomfe/echarts-for-weixin/blob/master/src/lib/ec-canvas/ec-canvas.js),在文件引入echarts库,并通过`wx.createCanvasContext`创建一个canvas context对象。 6. 在`ec-canvas`文件夹,创建一个名为`ec-canvas.json`的文件,用于定义echarts的canvas组件的配置。可以参考微信小程序官方文档关于`canvas`的配置(https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/component.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E9%A1%B5%E9%9D%A2%E9%85%8D%E7%BD%AE)。 7. 在引用echarts的页面或组件,使用`usingComponents`引入echarts的canvas组件。在页面的json文件,添加类似以下的配置: ``` "usingComponents": { "ec-canvas": "/echarts/components/ec-canvas/ec-canvas" } ``` 8. 在页面的wxml文件,使用`ec-canvas`组件来渲染echarts图表。可以参考echarts官方提供的示例代码(https://github.com/ecomfe/echarts-for-weixin/blob/master/demo/index/index.js)。 通过以上步骤,我们就可以将echarts包进行分包使用。注意,如果echarts的版本更新或需要进行定制化的修改,可以根据具体情况进行相应的调整。 ### 回答2: 微信小程序Echarts 包可以通过分包来使用。在分包的过程,可以根据具体需求,将 Echarts 包和其他相关资源分割成不同的部分进行加载,从而实现更加灵活和高效的使用方式。 以下是微信小程序分包使用 Echarts 包的步骤: 1. 首先,在项目的 `app.json` 文件配置分包信息。在 `subPackages` 字段添加一个新的子包配置,指定 `root` 为 Echarts 包的根目录,`pages` 为需要引入 Echarts 包的页面路径,如下所示: ```js "subPackages": [ { "root": "echarts", "pages": [ "echarts-demo" ] } ] ``` 2. 在项目的根目录下创建一个名为 `echarts` 的文件夹,用于存放 Echarts 包相关的文件。 3. 将 Echarts 包的源代码或压缩包解压到 `echarts` 文件夹。 4. 在需要使用 Echarts 的页面,按照正常的方式引入 Echarts 的相应代码文件或模块。例如,在 `echarts-demo` 页面使用 Echarts,可以在页面的 `.js` 文件使用 `require` 或 `import` 的方式引入相关的图表代码文件或模块。 ```js const echarts = require('../../echarts/echarts.min.js') require('../../echarts/chart/line.js') ``` 5. 在页面的 `.wxml` 文件,可以使用自定义的 `echarts` 组件来展示图表。在自定义组件的配置,指定 `echarts-wrap` 类作为样式类,并设置合适的宽度和高度。例如: ```html <view class="echarts-wrap"> <echarts canvas-id="mychart" ec="{{ec}}" bindinit="echartsInit"></echarts> </view> ``` 6. 在页面的 `.js` 文件,定义相应的数据和方法,来实现图表的初始化和更新。 以上就是使用分包的方式,在微信小程序引入和使用 Echarts 包的步骤。通过合理地使用分包功能,可以更好地组织和管理项目的代码和资源,提高项目的可维护性和性能。 ### 回答3: 微信小程序echarts包可以使用分包的方式进行引入和使用。具体步骤如下: 1. 首先,在微信小程序创建一个新的分包,可以将其命名为echarts。 2. 在分包的目录下,创建一个新的js文件,命名为echarts.js,并在该文件引入echarts包的相关代码。 3. 在需要使用echarts的页面,引入该分包。在页面的json配置文件,使用"usingComponents"字段,将新的分包路径添加进去。例如: ```json "usingComponents": { "echarts": "/path/to/echarts" } ``` 4. 在页面的wxml模板文件,使用自定义组件echarts,并在其属性传入相关参数,例如: ```html <echarts chart-data="{{chartData}}" chart-options="{{chartOptions}}"></echarts> ``` 其,chartData为echarts数据,chartOptions为echarts的配置参数。 5. 在页面的wxss样式文件,进行样式的调整和布局。 通过以上步骤,就可以使用分包的方式引入echarts包,并在微信小程序使用echarts进行数据可视化分析和展示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值