首頁 >微信小程式 >小程式開發 >微信小程式中使用ECharts 非同步載入資料的方法

微信小程式中使用ECharts 非同步載入資料的方法

不言
不言原創
2018-06-27 15:19:184347瀏覽

這篇文章主要介紹了微信小程式中使用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 &#39;../../ec-canvas/echarts&#39;;
Page({
 data: {
  ecBar: {
   lazyLoad: true // 延迟加载
  },
  ecScatter: {
   lazyLoad: true 
  }
 },
 onLoad(){
  this.barComponent = this.selectComponent(&#39;#mychart-dom-multi-bar&#39;);
  this.scaComponnet = this.selectComponent(&#39;#mychart-dom-multi-scatter&#39;);
  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: [&#39;#37a2da&#39;, &#39;#32c5e9&#39;, &#39;#67e0e3&#39;],
   tooltip: {
    trigger: &#39;axis&#39;,
    axisPointer: {      // 坐标轴指示器,坐标轴触发有效
     type: &#39;shadow&#39;    // 默认为直线,可选为:&#39;line&#39; | &#39;shadow&#39;
    }
   },
   legend: {
    data: [&#39;热度&#39;, &#39;正面&#39;, &#39;负面&#39;]
   },
   grid: {
    left: 20,
    right: 20,
    bottom: 15,
    top: 40,
    containLabel: true
   },
   xAxis: [
    {
     type: &#39;value&#39;,
     axisLine: {
      lineStyle: {
       color: &#39;#999&#39;
      }
     },
     axisLabel: {
      color: &#39;#666&#39;
     }
    }
   ],
   yAxis: [
    {
     type: &#39;category&#39;,
     axisTick: { show: false },
     data: [&#39;汽车之家&#39;, &#39;今日头条&#39;, &#39;百度贴吧&#39;, &#39;一点资讯&#39;, &#39;微信&#39;, &#39;微博&#39;, &#39;知乎&#39;],
     axisLine: {
      lineStyle: {
       color: &#39;#999&#39;
      }
     },
     axisLabel: {
      color: &#39;#666&#39;
     }
    }
   ],
   series: [
    {
     name: &#39;热度&#39;,
     type: &#39;bar&#39;,
     label: {
      normal: {
       show: true,
       position: &#39;inside&#39;
      }
     },
     data: [300, 270, 340, 344, 300, 320, 310]
    },
    {
     name: &#39;正面&#39;,
     type: &#39;bar&#39;,
     stack: &#39;总量&#39;,
     label: {
      normal: {
       show: true
      }
     },
     data: [120, 102, 141, 174, 190, 250, 220]
    },
    {
     name: &#39;负面&#39;,
     type: &#39;bar&#39;,
     stack: &#39;总量&#39;,
     label: {
      normal: {
       show: true,
       position: &#39;left&#39;
      }
     },
     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: &#39;#C8C8C8&#39;
    }
   },
   axisTick: {
    lineStyle: {
     color: &#39;#fff&#39;
    }
   },
   axisLine: {
    lineStyle: {
     color: &#39;#C8C8C8&#39;
    }
   },
   splitLine: {
    lineStyle: {
     color: &#39;#C8C8C8&#39;,
     type: &#39;solid&#39;
    }
   }
  };
  return {
   color: ["#FF7070", "#60B6E3"],
   backgroundColor: &#39;#eee&#39;,
   xAxis: axisCommon,
   yAxis: axisCommon,
   legend: {
    data: [&#39;aaaa&#39;, &#39;bbbb&#39;]
   },
   visualMap: {
    show: false,
    max: 100,
    inRange: {
     symbolSize: [20, 70]
    }
   },
   series: [{
    type: &#39;scatter&#39;,
    name: &#39;aaaa&#39;,
    data: data
   },
   {
    name: &#39;bbbb&#39;,
    type: &#39;scatter&#39;,
    data: data2
   }
   ],
   animationDelay: function (idx) {
    return idx * 50;
   },
   animationEasing: &#39;elasticOut&#39;
  };
 },
});

注意:非同步載入時,ec-canvas標籤載入顯示要先於this.scaComponnet.init,否則會報錯。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於微信小程式中跳轉傳參數與傳對象的解析

微信小程序中支付後呼叫SDK的非同步通知及驗證處理訂單方法

關於微信小程式的非同步處理

以上是微信小程式中使用ECharts 非同步載入資料的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn