微信小程序监听App中的globalData——全局数据监听

1.在app.js中定义监听方法
 

// app.js
App({
  //全局变量
  globalData: {
    loginAlert:false
  },

  /**
   * 定义监听全局变量
   * @param {*} variate:变量名称
   * @param {*} method:监听的其它页面方法回调 
   */
  watch(variate,method){
    var obj = getApp().globalData
    var val = obj[variate]
    //监听数据
    Object.defineProperty(obj,variate,{
      set:value=>{
        val = value
        method(variate,value)
      },
      get:()=>{
        return val
      }
    })
  }
})


2.注册监听方法
在需要监听的组件中注册app().watch 方法

// components/login-alert/login-alert.js
const app = getApp()
Component({

  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    show:false
  },

  lifetimes:{
    attached(){
      //注册监听全局登陆窗口弹出参数
      app.watch('loginAlert',()=>{
        this.setData({
          show:app.globalData.loginAlert
        })
      })
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐