【前后交互】微信小程序的echarts前后交互解决

一、描述

在微信小程序中使用echarts时,像Vue中直接把data传入是不行的,原因是因为小程序的生命周期一样

二、解决办法

使用全局变量进行传入数据

第一步:

在app.js中加入 globalData{}

//app.js
App({
  globalData: {
    mealsList:[],  // 用户记录
    name: '张三',
    age: 18,
      time:[],//7,6,4,2,3,5,6
      heartRate:[],//65,76,87,54,64,54,65
      sleepTime:[],//10,30,31,50,40,20,10
      temperature:[],//37,36,37,38,36,37,36
      bodyScore:70,
      assessmentScore:70,
      mentalScore:70
  },
  
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
      }
})

第二步
在所需echarts页面加载的前一个页面的onLoad中进行服务端的数据获取(app.global. 获取也可直接进行修改):

onLoad:function(){
    // setInterval(()=>{console.log("hello"),1000});
    // setInterval(()=>this.getNewChartData, 10000);


      this.setData({
    id: app.globalData.mealsList
 }),

 console.log("test")
    wx.request({
     url: 'http://127.0.0.1:8082/Hys/employee/queryLastSevenRecord', //仅为示例,并非真实的接口地址
     data: {
     "id": app.globalData.mealsList
     },
     method:"POST",
     header: {
     'content-type': 'application/x-www-form-urlencoded ' // 默认值
     },
     success (res) {
       console.log(app.globalData.mealsList)
     console.log(res)
     //toFixed():保留小数   ,unshift与push
    for(let i=0; i<res.data.length;i++){
    app.globalData.time.unshift(res.data[i].time.substring(11,19));
    app.globalData.temperature.unshift(parseFloat(res.data[i].temperature));
    app.globalData.heartRate.unshift(parseFloat(res.data[i].heartRate));
    app.globalData.sleepTime.unshift(parseFloat(res.data[i].sleepTime));
    }
     }
     })
},

第三步
把echarts中的series中的data: app.globalData. 即可

 series: [{
      name: '体温',
      type: 'line',
      smooth: true,
      data: app.globalData.temperature
    }, {
      name: '心率',
      type: 'line',
      smooth: true,
      data: app.globalData.heartRate
    }, {
      name: '睡眠',
      type: 'line',
      smooth: true,
      data: app.globalData.sleepTime
    }]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值