微信小程序中使用ECharts 异步加载数据的方法


Posted in Javascript onJune 27, 2018

官网例子都是同步的,怎么引入及同步demo请移步官网

<view class="container">
 <ec-canvas id="mychart-dom-multi-bar" canvas-id="mychart-multi-bar" ec="{{ ecBar }}"></ec-canvas>
 <ec-canvas id="mychart-dom-multi-scatter" canvas-id="mychart-multi-scatter" ec="{{ ecScatter }}"></ec-canvas>
</view>
import * as echarts from '../../ec-canvas/echarts';
Page({
 data: {
  ecBar: {
   lazyLoad: true // 延迟加载
  },
  ecScatter: {
   lazyLoad: true 
  }
 },
 onLoad(){
  this.barComponent = this.selectComponent('#mychart-dom-multi-bar');
  this.scaComponnet = this.selectComponent('#mychart-dom-multi-scatter');
  this.init_bar();
  this.init_sca();
 },
 init_bar: function (){
  this.barComponent.init((canvas, width, height) => {
   // 初始化图表
   const barChart = echarts.init(canvas, null, {
    width: width,
    height: height
   });
   barChart.setOption(this.getBarOption());
   // 注意这里一定要返回 chart 实例,否则会影响事件处理等
   return barChart;
  });
 },
 init_sca: function () {
  this.scaComponnet.init((canvas, width, height) => {
   // 初始化图表
   const scaChart = echarts.init(canvas, null, {
    width: width,
    height: height
   });
   scaChart.setOption(this.getScaOption());
   // 注意这里一定要返回 chart 实例,否则会影响事件处理等
   return scaChart;
  });
 },
 getBarOption:function(){
  //return 请求数据
  return {
   color: ['#37a2da', '#32c5e9', '#67e0e3'],
   tooltip: {
    trigger: 'axis',
    axisPointer: {      // 坐标轴指示器,坐标轴触发有效
     type: 'shadow'    // 默认为直线,可选为:'line' | 'shadow'
    }
   },
   legend: {
    data: ['热度', '正面', '负面']
   },
   grid: {
    left: 20,
    right: 20,
    bottom: 15,
    top: 40,
    containLabel: true
   },
   xAxis: [
    {
     type: 'value',
     axisLine: {
      lineStyle: {
       color: '#999'
      }
     },
     axisLabel: {
      color: '#666'
     }
    }
   ],
   yAxis: [
    {
     type: 'category',
     axisTick: { show: false },
     data: ['汽车之家', '今日头条', '百度贴吧', '一点资讯', '微信', '微博', '知乎'],
     axisLine: {
      lineStyle: {
       color: '#999'
      }
     },
     axisLabel: {
      color: '#666'
     }
    }
   ],
   series: [
    {
     name: '热度',
     type: 'bar',
     label: {
      normal: {
       show: true,
       position: 'inside'
      }
     },
     data: [300, 270, 340, 344, 300, 320, 310]
    },
    {
     name: '正面',
     type: 'bar',
     stack: '总量',
     label: {
      normal: {
       show: true
      }
     },
     data: [120, 102, 141, 174, 190, 250, 220]
    },
    {
     name: '负面',
     type: 'bar',
     stack: '总量',
     label: {
      normal: {
       show: true,
       position: 'left'
      }
     },
     data: [-20, -32, -21, -34, -90, -130, -110]
    }
   ]
  };
 },
 getScaOption:function(){
  //请求数据 
  var data = [];
  var data2 = [];
  for (var i = 0; i < 10; i++) {
   data.push(
    [
     Math.round(Math.random() * 100),
     Math.round(Math.random() * 100),
     Math.round(Math.random() * 40)
    ]
   );
   data2.push(
    [
     Math.round(Math.random() * 100),
     Math.round(Math.random() * 100),
     Math.round(Math.random() * 100)
    ]
   );
  }
  var axisCommon = {
   axisLabel: {
    textStyle: {
     color: '#C8C8C8'
    }
   },
   axisTick: {
    lineStyle: {
     color: '#fff'
    }
   },
   axisLine: {
    lineStyle: {
     color: '#C8C8C8'
    }
   },
   splitLine: {
    lineStyle: {
     color: '#C8C8C8',
     type: 'solid'
    }
   }
  };
  return {
   color: ["#FF7070", "#60B6E3"],
   backgroundColor: '#eee',
   xAxis: axisCommon,
   yAxis: axisCommon,
   legend: {
    data: ['aaaa', 'bbbb']
   },
   visualMap: {
    show: false,
    max: 100,
    inRange: {
     symbolSize: [20, 70]
    }
   },
   series: [{
    type: 'scatter',
    name: 'aaaa',
    data: data
   },
   {
    name: 'bbbb',
    type: 'scatter',
    data: data2
   }
   ],
   animationDelay: function (idx) {
    return idx * 50;
   },
   animationEasing: 'elasticOut'
  };
 },
});

注意:异步加载时,ec-canvas标签加载显示要先于this.scaComponnet.init,否则会报错。

总结

以上所述是小编给大家介绍的微信小程序中使用ECharts 异步加载数据的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
toString()一个会自动调用的方法
Feb 08 Javascript
javascript 实现字符串反转的三种方法
Nov 23 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
Feb 08 Javascript
解决vue-router中的query动态传参问题
Mar 20 Javascript
JavaScript私有变量实例详解
Jan 24 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
详解Typescript里的This的使用方法
Jan 08 Javascript
浅谈Webpack下多环境配置的思路
Jun 27 #Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
Jun 27 #Javascript
详解关于vue-area-linkage走过的坑
Jun 27 #Javascript
详解nuxt sass全局变量(公共scss解决方案)
Jun 27 #Javascript
Vue引入sass并配置全局变量的方法
Jun 27 #Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 #Javascript
vue中v-model的应用及使用详解
Jun 27 #Javascript
You might like
php+mysql查询优化简单实例
2015/01/13 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
工程专业求职自荐书范文
2014/02/08 职场文书
政风行风整改报告
2014/11/06 职场文书
结婚幸福感言
2015/08/01 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书