小程序中js页面声明的变量与函数只能在此页面中使用,并且在不同页面中可以用相同的变量命名。而如果想要某些数据在所有页面中都能使用,那就可以使用全局变量globalData进行数据的存取。globalData在app.js中进行设置。
//app.js文件
App({
onLaunch (options) { //在小程序完成初始化时,触发onLaunch(全局只触发一次)
// Do something initial when launch.
},
//...
globalData: { //全局变量
Info: 12,
newsList:[{}]
}
})
1、在app.js页面中要修改globalData变量的值,如果直接在onLaunch: function () 函数中修改,只需要用this调用globalData进行修改。
this.globalData.Info = 15;
console.log(this.globalData.Info) //15
2、若使用了请求wx.request等 则需要使用 var that = this,然后用that调用globalData。
App({
onLaunch: function () {
//请求信息
var that = this;
wx.request({
url: 'https:.............',//此处略
data: {
x: "",
y: ""
},
success: function (res) {
console.log(res.data);
let list = [];
for (var i = 0; i < 4; i++) {
let obj = {};
obj.id = res.data.result.data[i].uniquekey;
obj.title = res.data.result.data[i].title;
obj.date = res.data.result.data[i].date;
obj.url = res.data.result.data[i].url;
obj.poster = res.data.result.data[i].thumbnail_pic_s;
list.push(obj);
}
that.globalData.newsList = list;
}
})
当需要在其他页面读取和修改globalData中的数据时,需要用var app = getApp()进行引用
1、读取
var app = getApp(); //声明app实例
Page({
onLoad: function() {
console.log(app.globalData.Info);
}
})
2、修改数据
//index.js
var app = getApp();
Page({
onLoad: function() {
app.globalData.Info = 22;
}
})