ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

(4#)【已解决】微信小程序一个页面修改了全局变量,另一个页面却还是显示该变量的初始值

2019-05-17 21:49:14  阅读:974  来源: 互联网

标签:theGlobalData wxml 微信 app 初始值 js 全局变量 页面


微信小程序踩坑记

问题描述:

做法:设想,在一个页面A的A.js中改变app.js中设置的某全局变量 theGlobalData 的值,然后在页面B的B.wxml上专门有一个{{theGlobalData}}用来获取并显示该全局变量值的表达式。
目的:上述做法目的是当我们在A.js中对一个变量做了变化,希望另一个页面B.wxml能够实时呈现该变量被改变后的值。
遇到的困难:A.js中改变的这个全局变量在B.wxml中还是显示原来的初始值,并没有因A.js中的赋值而改变。
各类尝试和调整
1. 是不是没用到this.setData({ }),导致我data里的值没被重新刷新和覆盖?用了。
2. 是不是没用var app=getApp()?也用了。
3. 是不是没用正确的赋值语句,如app.globalData.theGlobalData=xxxx?用了。
4. 其他页面C.js、D.js、F.js中用console.log(app.globalData.theGlobalData)显示一下,发现该语句放onLoad()中也是在控制台输出初始值,但是!用在其他函数方法中却是已经改变后的值!!如放在某个标签的点击方法中,点击就会输出改变后的值。
5. 在B.js中也做了步骤4的尝试,发现效果一样。B、C、D、F页面都是一样的情况!

结论:全局变量的值确实在A.js中改变了,只不过切换去其他页面时,这些页面没有再进行渲染,页面不重新渲染就表现出页面没有刷新一样,所以表现出该全局变量并没有在wxml上呈现新值。

解决办法:

在需要呈现该全局变量值的B、C、D、F等.wxml页面都在生命周期函数onShow中写上this.setData({ …})代码,这样才能实现切换到B页面就保证渲染一次.wxml文件,onShow该函数表示一旦呈现该页面在用户眼中时要做些什么动作。

在B.js中补上:

// 生命周期函数--监听页面显示
  onShow: function () {
    this.setData({
      theGlobalData: app.globalData.theGlobalData
    })
  },

在B.wxml中:

// 生命周期函数--监听页面显示
<text>显示新的全局变量值:{{theGlobalData}}</text>

哪里需要实时呈现全局变量数值,哪里的js文件就需要补上onShow方法中的代码,用点击事件的那种不必使用这个函数。

作者:跌坑记又更新一次,气死我了[○・`Д´・ ○]!!!

标签:theGlobalData,wxml,微信,app,初始值,js,全局变量,页面
来源: https://blog.csdn.net/yang_ri/article/details/90300432

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有