最近自己在做的毕业论文是利用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()来改变全局变量,这是一个大坑。如果这里哪里有写错误的地方,请大家指正。如果对于此问题有更好的解决方法欢迎大家讨论!