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

 更新时间:2018年06月27日 10:14:53   作者:Jade_g  
这篇文章主要介绍了微信小程序中使用ECharts 异步加载数据的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

官网例子都是同步的,怎么引入及同步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中0.1 + 0.2 != 0.3

    为什么JavaScript中0.1 + 0.2 != 0.3

    这篇文章主要给大家介绍了关于为什么JavaScript中0.1 + 0.2 != 0.3的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • js Promise并发控制数量的方法

    js Promise并发控制数量的方法

    在业务开发过程中,我们经常会遇到多个异步任务并发执行的情况,待所有异步任务结束之后再执行我们的业务逻辑,那么js Promise并发控制数量是多少,本文就来介绍一下
    2021-08-08
  • 原生js+css调节音量滑块

    原生js+css调节音量滑块

    这篇文章主要介绍了原生js+css调节音量滑块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • php gethostbyname获取域名ip地址函数详解

    php gethostbyname获取域名ip地址函数详解

    php gethostbyname获取域名ip地址函数,需要根据域名得到ip地址的朋友有福了。
    2010-01-01
  • JavaScript中Null与Undefined的区别解析

    JavaScript中Null与Undefined的区别解析

    这篇文章主要介绍了JavaScript中Null与Undefined的区别解析,本文给出了多个代码实例讲解它们之间的区别,需要的朋友可以参考下
    2015-06-06
  • 基于layui内置模块(element常用元素的操作)

    基于layui内置模块(element常用元素的操作)

    今天小编就为大家分享一篇基于layui内置模块(element常用元素的操作),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • firefox firebug中文入门教程 脚本之家新年特别版

    firefox firebug中文入门教程 脚本之家新年特别版

    最近看了一篇文章感触颇深,对于firebug作为脚本之家的编辑经常看的到,但可悲的是没怎么用过,不是不用那个而是不会用,刚好看了一篇基础的文章特别整理下。
    2010-01-01
  • JS实现简单获取最近7天和最近3天日期的方法

    JS实现简单获取最近7天和最近3天日期的方法

    这篇文章主要介绍了JS实现简单获取最近7天和最近3天日期的方法,涉及javascript针对日期与时间的相关数值运算与转换操作技巧,需要的朋友可以参考下
    2018-04-04
  • 用JavaScript判断CSS浏览器类型前缀的两种方法

    用JavaScript判断CSS浏览器类型前缀的两种方法

    不管浏览器更新的多快,号称多么支持标准。厂商不同,他们之间还是有很多差异。我们需要区分出这些差异,针对不同的浏览器做不同的处理。
    2015-10-10
  • javascript浏览器窗口之间传递数据的方法

    javascript浏览器窗口之间传递数据的方法

    这篇文章主要介绍了javascript浏览器窗口之间传递数据的方法,实例分析了父窗口与子窗口之间传递参数的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01

最新评论