微信小程序------如何在其他页面获取和改变全局变量

最近自己在做的毕业论文是利用iBeacon来进行室内定位,因为需求刚好使用到了微信小程序。由于自己是微信小程序这方面的小白,所以这个问题困扰了自己很久,其实这个问题很简单。结合自己入的坑和上网查的资料,下面是自己的一些小经验,希望能够帮助到刚自学微信小程序的小白!

设置全局变量

在微信小程序中app.js中设置全局变量,globalData{iBeaconInfo: []},这里由于需求我定义了一个空数组,用来存储手机实时获取到的iBeacon信息。

//app.js
App({
  globalData: {
    iBeaconInfo: []
  },)

获取全局变量

在pages中的自定义的position.js中获取全局变量。

首先

var app = getApp();

其次

//定义一个变量获取全局变量
var iInfo=app.globalData.iBeaconInfo;

总结如下:

// pages/position/position.js
var app = getApp();
Page({
/**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //定义一个变量获取全局变量
    var iInfo=app.globalData.iBeaconInfo;
    console.log(iInfo);
  },
})

改变全局变量

这个地方是自己入坑的地方,我一开始想的是利用一个全局函数来改变改变全局变量的值,从而使得其他的页面都可以获取到全局变量,但事实是在app.js中是无法利用this.setData()来改变全局变量。所以我就利用在pages中的index.js页面中函数来改变全局变量,效果是一样的。代码如下

//index.js
//获取应用实例
var app = getApp();
Page({
/**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //实时改变全局变量的值,arrayIBeaconInfo是自己在自定义函数中获取到的数组
    //这样就可以改变全局变量的值了
    app.globalData.iBeaconInfo = arrayIBeaconInfo;
  },
  )

总结:重点是不能在app.js中使用this.setData()来改变全局变量,这是一个大坑。如果这里哪里有写错误的地方,请大家指正。如果对于此问题有更好的解决方法欢迎大家讨论!

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值