美文网首页
微信小程序数据监听

微信小程序数据监听

作者: guaker | 来源:发表于2021-08-20 01:24 被阅读0次

iOS数据监听很简单,比如登录成功之后首页、个人中心页等很多页面都需要更新数据,只需要首页和个人中心页注册通知,登录成功之后发送通知,首页和个人中心页就能接收到该通知,此时就可以更新数据及界面,退出登录同理。
小程序更新页面数据就比较费劲,之前我都是获取上级页面,然后调用上级页面自定义方法loadNewData方法来刷新上级页面数据。

//更新上级页面
var pages = getCurrentPages()
var prevPage = pages[pages.length - 2] //上一个页面
prevPage.loadNewData() 

这种方法说实话也挺好用的,但是只能更新 wx.navigateTo打开的页面。
官方也有页面间通信方法EventChannel,同样只能和wx.navigateTo打开的页面进行通信。
今天遇到的需求是tabbar切换的页面更新首页列表数据,只能各种百度,最终也实现的功能。

// 监听方法
watch: function (callback) {
  var obj = this.globalData

  Object.defineProperty(obj, "reloadIndex", {
    configurable: true,
    enumerable: true,
    set: function (value) { //set方法
      this._reloadIndex = value
      callback(value)
    }
  })
},

globalData: {
  reloadIndex: false //刷新首页
}

在首页调用

const app = getApp()

onLoad: function (options) {
  app.watch(this.loadNewData)
}

在其他页面修改reloadIndex的值

// 刷新首页列表
reloadIndexList: function () {
  app.globalData.reloadIndex = true
}

小程序组件有数据监听器,也实现了某个功能。

/**
 * 数据监听器
 */
observers: {
  // 监听语音消息播放状态
  'message.audioPlay': function (audioPlay) {
    if (audioPlay == 1) {
      this.beginAudioAnimation()
    } else if (audioPlay == 0) {
      this.endAudioAnimation()
    }
  }
}

参考文章:
小程序实现数据监听
小程序如何在其他页面监听globalData中值的变化?
微信小程序设置简单的监听器

相关文章

网友评论

      本文标题:微信小程序数据监听

      本文链接:https://www.haomeiwen.com/subject/mvuzbltx.html