博客列表 >小程序全局变量的使用

小程序全局变量的使用

程先生的博客
程先生的博客原创
2019年08月17日 18:19:591973浏览

在微信小程序开发的过程中,博主一度被app.js中全局变量的设置,以及在page中重新赋值,却未在项目中所有page中动态响应这一问题困扰了很久。博主把本人遇到的问题叙述一下:


博主的错误示例

app.js


App({

    data:{

        globaldata: 1, // 用于测试的全局变量

    }

})

page中:


const app = getApp();

 

Page({

    data: {

        fulldata: app.data, // 拿到全局变量

    },

    changeData: function(){

        this.setData({

            'fulldata.globaldata': 2

        })

    }

})

当触发changeData这一方法时,当前页面使用  fulldata.globaldata 这一数据时,在当前page中 取到的globaldata值 确实发生了动态的更新,修改为了2;


但是!在 app.js中的globaldata值它依旧是为1,并且其他页面中使用app.js中globaldata时,其值也为1,这是什么原因造成的呢?

在page中  我们使用 this.setData赋值时,this的执行上下文是page本身,其setData也只能修改当前page中data里面的值,这也就是我们为什么不能在页面中使用 this.setData修改全局变量的值的原因了。


如果想在页面中修改全局变量值,以及在页面中动态使用全局变量值,在赋值的时候我们加一条就能达到预期目标:如下


const app = getApp();

 

Page({

    data: {

        fulldata: app.data, // 拿到全局变量

    },

    changeData: function(){

        this.setData({

            'fulldata.globaldata': 2

        })

        app.data.globaldata = 2;

    }

})

加一条: app.data.globaldata = 2;  即可修改全局变量的值,也可在当前页面全局变量值动态更新。

 ———————————————— 

版权声明:本文为CSDN博主「酷酷小七」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_37861326/article/details/84333517


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议