当前位置:   article > 正文

springboot初始化加载数据_小程序 echarts图表初始化与加载动态数据

springboot根据柱状图x轴数据初始化y轴数据

在小程序中,根据需求有时候需要添加多个echarts图表进行动态数据的显示。

但是动态数据是异步加载的,不能确定究竟是数据加载完成在前,还是echarts图表初始化完成在前,因此会出现图表上无数据显示控制台却有数据获取的情况发生。

使用绑定事件监听函数addEvent(),当完成事件再进行通知callEvent()可参考例子

  • 外部封装方法
  1. function endInitData()
  2. {
  3. event.callEvent("endInitData")
  4. }
  5. function getDataServer(url, data, cb) {
  6. wx.request({
  7. url: url,
  8. data: data,
  9. method: 'POST',
  10. header: {
  11. 'content-type': 'application/json'
  12. },
  13. success: (res) => {
  14. cb(res)
  15. },
  16. fail: () => {
  17. wx.showToast({
  18. title: '请求超时!',
  19. mask: true,
  20. duration: 3000
  21. })
  22. }
  23. })
  24. }

应当将echarts的初始化以及数据绑定两者进行一个状态是否完成的判定,则需要分别设置一个状态值,完成是设置值为1

  1. var initDataFlag = 0
  2. var initFlag = 0
  • 在当前页面的js中,进行对数据的请求
  1. //设置一个函数
  2. var url = '请求的地址'
  3. function fillChart(chart, option) {
  4. var reqData = data
  5. }
  6. proData.getDataServer(url, reqData, function(res) {
  7. //可以console打印出回调的res再进行数据选择
  8. var datapoints= res.data[0].datapoints;
  9. var xAxisData = [];
  10. var seriesData = [];
  11. for (var i = 0; i < datapoints.length; i++) {
  12. var v = datapoints[i][0];
  13. var t = datapoints[i][1];
  14. //如果是需要获取时间的则进行转换
  15. //var day = (new Date(t)).getDate() // 月份则.getMonth() + 1
  16. //xAxisData.push(day + "日")
  17. xAxisData.push(t.toFixed(0)) //取整
  18. seriesData.push(v.toFixed(0))
  19. }
  20. option.xAxis[0].data = xAxisData //定位横坐标的数据位置
  21. option.series[0].data = seriesData //这里是纵坐标
  22. chart.setOption(option)
  23. })
  24. }
  • 根据请求数据以及所选择的echarts图表,进行数据位置的绑定
  1. var eventList = {}
  2. function addEvent(eventName, cb) {
  3. if (eventList[eventName] == undefined) {
  4. eventList[eventName] = []
  5. }
  6. eventList[eventName].push(cb)
  7. }
  8. function callEvent(eventName)
  9. {
  10. if (eventList[eventName] == undefined) {
  11. return
  12. }
  13. var list = eventList[eventName]
  14. for(var i = 0; i &lt; list.length; i++)
  15. {
  16. eventList[eventName][i]()
  17. }
  18. }
  19. module.exports = {
  20. addEvent: addEvent,
  21. callEvent: callEvent
  22. }
  • 判断是否进行数据渲染
  1. endInitData: function() {
  2. initDataFlag = 1; //执行该方法 数据渲染状态变为1
  3. if (initFlag == 1) {
  4. fillChart(chart, option)
  5. }
  6. },
  • 别忘了导包
var event = require('../event/event.js')
  • 最后再onLoad()中执行addEvent()
event.addEvent("endInitData", this.endInitData)
Zjaun的博客_CSDN博客-HTML,JQ,VUE领域博主​blog.csdn.net
5314d78cddcf7ba3ba20741a7ff782d0.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/265546
推荐阅读
相关标签
  

闽ICP备14008679号