Blogger Information
Blog 25
fans 0
comment 0
visits 42081
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
小程序全局变量的使用
程先生的博客
Original
1967 people have browsed it

在微信小程序开发的过程中,博主一度被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


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post