zoukankan      html  css  js  c++  java
  • 微信小程序在其他页面监听globalData中值的变化(转载)

    微信小程序在其他页面监听globalData中值的变化(转载)

    由于要监听到globalData中的值的变化,所以一般要在globalData改变时回调一个方法。例如我们监听一个name属性,大致代码如下:

    // app.js中
    //app.js
    App({
      onLaunch: function () {
        let that = this
        // 在这里用定时器模拟网络请求的过程
        setTimeout(function(){
          that.globalData.name = 'pxh'
        },3000) 
      },
     // 这里这么写,是要在其他界面监听,而不是在app.js中监听,而且这个监听方法,需要一个回调方法。
      watch:function(method){
        var obj = this.globalData;
        Object.defineProperty(obj,"name", {
          configurable: true,
          enumerable: true,
          set: function (value) {
            this._name = value;
            console.log('是否会被执行2')
            method(value);
          },
          get:function(){
          // 可以在这里打印一些东西,然后在其他界面调用getApp().globalData.name的时候,这里就会执行。
            return this._name
          }
        })
      },
      globalData: {
        userInfo: null,
        _name:'msr'
      }
    })
    
    
    // 然后在index.js中的声明周期中实现
    onLoad: function (options) {
        let that = this;
        getApp().watch(that.watchBack)
      },
      watchBack: function (name){
        console.log(22222);
        console.log('this.name==' + name)
      }
    
  • 相关阅读:
    如何判断某个变量是否是数组?
    mac vscode编辑器的快捷键
    vue require.context()动态文件引入
    在vue项目上使用less
    nrm是什么
    对象的扩展方法
    es5严格模式
    微信公众号定位不准问题
    layer使用iframe的路径不对问题
    form表单中reset对js赋值的表单象无法重置问题
  • 原文地址:https://www.cnblogs.com/wjw1014/p/12691827.html
Copyright © 2011-2022 走看看