zoukankan      html  css  js  c++  java
  • 小程序中使用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,
            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,
            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,否则会报错。

  • 相关阅读:
    CodeDOM浅析(上)
    这段代码居然运行正常
    CodeDOM浅析(下)
    动态生成与编译(七)根据CodeDOM生成源代码
    动态生成与编译(九)CodeDOM的局限
    动态生成与编译(八)动态编译
    新年送大礼
    祝所有的女性朋友们节日快乐!
    预测人民币在2006年最终的收盘价
    2007年春节,祝朋友们:身体健康,万事如意! 度过一个愉快春节!
  • 原文地址:https://www.cnblogs.com/gxp69/p/9232460.html
Copyright © 2011-2022 走看看