微信小程序中echarts动态加载数据
2018-07-07 09:20
330 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hao_0420/article/details/80931339
前期准备
需求:需要在微信小程序中动态显示图表。
经查询,选择使用echarts插件。
在echarts官网中获取ec-canvas组件,放入至微信小程序中
实现如下:
完整实例:dynamic-echarts-demo
wxml
[code]<ec-canvas id="mychart" canvas-id="mychart-line" ec="{{ ec }}"></ec-canvas>
js
[code]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图表。新的代码如下:
[code]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; }, })
阅读更多
相关文章推荐
- 微信小程序中使用ECharts 异步加载数据的方法
- 微信小程序动态的加载数据实例代码
- 第三节:微信小程序模拟动态加载服务器返回json数据
- 微信小程序动态的加载数据
- 微信小程序中使用ECharts 异步加载数据实现图表功能
- 微信小程序分页加载数据
- Echarts通过Ajax实现动态数据加载
- echarts官网上的动态加载数据bug被我解决。咳咳/。
- echarts动态加载数据
- Echarts实现饼状图数据动态加载
- Echarts动态加载折线图X Y轴数据图表数据
- 微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
- echarts加载动态数据---实时统计
- 使用Echarts图表动态加载饼图数据 pie
- echarts地图 json数据 和 后套动态数据加载
- 微信小程序之获取后台动态数据表格布局display:table
- eCharts动态加载各省份的数据
- 微信小程序 setData动态设置数组中的数据
- Echarts使用及动态加载图表数据 折线图X轴数据动态加载