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