小程序的变量使用,全局变量,其他函数的变量 app中的global和page的data中的变量 小程序页面之间传递数据和变量,数据可以是写死的数据也可以是在A页面得到的变量值,传递给B页面
全局变量的使用: 在app.js中加入
App({
globalData:{
global:'global3'
}
})
在任何一个页面都可以使用该变量,也可以更改
onLoad: function (options) {
var app=getApp()
var global=app.globalData.global
console.log(global)
}
此时可以看到调试器显示global3, 同一个页面,一个函数调用另一个函数的变量: 只要这个变量在该页面js的data里定义过,其他函数都可以进行调用this.data.变量名,按照代码运行的顺序,变量名进行改变,读取, var that=this的使用: this作用域分析: 1.在Page({})里面,this关键字指代Page({})整个对象 2.因此可以通过this关键字访问或者重新设置Page({})里data的变量 3.然而在loadData函数中使用了wx.request({})API这个方法导致在wx.request({})里没办法使用this来获取Page({})对象 4.虽然在wx.request({})里没法使用this获取Page({})对象,但是可以在wx.request({})外面先把this存在某个变量中,所以就有了var that =this 这个声明。此时that指代Page({})整个对象,这样子就可以在wx.request({})里使用that访问或者重新设置Page({})里data的变量
getWeather:function(){
var that =this;
wx.request({
url:"https://api.seniverse.com/v3/weather/now.json",
data:{location:that.data.region[1],
key:'******'},
success:function(res){
console.log(res.data);
console.log(that.data.region[0]),
that.setData({now1:res.data.results[0].now})
}
})
console.log(this.data.now1)
},
如果我们想将这个页面的数据或者获取的变量传递给下个页面:
bnt(){
let str={text:this.data.now1.text,
temperature:this.data.now1.temperature,
code:this.data.now1.code}
let now= JSON.stringify(str)
wx.navigateTo({
url: '../next/next?now1='+now
})
},
按钮功能跳转到下一个页面pages/next/next 将本页面的now1的值传输过去,如果是一个简单的给定的值可以直接写在url里,例如:‘…/next/next?now1=3’,也可以给一个变量赋值,比如, let now=3, url: ‘…/next/next?now1=’+now,如果数据比较多,那么用json格式传输,在接收的页面进行解码,接受页面:
onLoad: function (options) {
console.log(options)
let model = JSON.parse(options.now1)
this.setData({
num:model,
global:global
})
},
效果如图: 此时我们传输成了字符串,页面进行调用即可
<view>{{num.text}}</view>
顺便说一下var和let的区别 let声明的变量是局部变量,该变量只会在最靠近{ }内的范围有效,出了{}之后,该变量就不能用了,否则会报该变量未定义的错误。 let声明的变量只在它所在的代码块有效。 var申明的变量是全局变量,其作用域为所在的函数内。 var命令会发生”变量提升“现象,即变量可以在声明之前使用。
|