小程序傳(chuan)遞(di)參數的(de)方式有三種:
(1)通過在App.js中設置全局變量(liang)
(2)通(tong)過拼(pin)接URL直接傳遞(di)
(3)通過數據緩存(cun)存(cun)儲再(zai)獲取
1.app.js
通常把(ba)不(bu)會更(geng)改的(de)(de)數(shu)據放在(zai)app.js的(de)(de)Data中,在(zai)各個頁面(mian)中都可(ke)以通過APP實例獲取(qu)Data數(shu)據。
var app = getApp(); var data = app.data;
2.wx.navigateTo({})中URL攜(xie)帶(dai)參(can)數
wx.navigateTo({
url: 'test?id=1'
}); |
3. 數據緩存
①wx.setStorageSync(KEY,DATA)存儲(chu)數據
try {
wx.setStorageSync('key', 'value')
} catch (e) {
} |
②wx.getStorageSync(KEY)獲取數據
try {
var value = wx.getStorageSync('key')
if (value) {
// Do something with return value
}
} catch (e) {
// Do something when catch error
} |
然(ran)而,根據(ju)所傳(chuan)遞(di)參(can)數(shu)的數(shu)據(ju)類(lei)(lei)型(xing)的不(bu)同,如(ru)對(dui)象(xiang)、數(shu)組集合(he)需(xu)要(yao)進行相應(ying)的處理。本質上都是String類(lei)(lei)型(xing)的傳(chuan)遞(di)。
1、傳遞基本數據類(lei)型
Page({
data: {
testStr: 'xiaochengxu'
},
next: function(e){
wx.navigateTo({
url: '/test/test?str='+this.data.testStr
})
}
})
Page({
onLoad:function(options){
console.log("接收到的參數是str="+options.str);
}
}) |
打印內容:接收到的參數是str=xiaochengxu
2,傳遞對象
Page({
data: {
testData:{name:'username', password:'password'}
},
next: function(e){
wx.navigateTo({
url: '/test/test?testData='+JSON.stringify(this.data.testData)
})
}
})
Page({
data:{
testData:null
},
onLoad:function(options){
console.log("接收到的參數是testData="+options.testData);
this.data.testData = JSON.parse(options.testData);
}}) |
打印內容:
接收到的參數是testData={"name":"username","password":"password"}
3,傳遞數(shu)組集合
Page({
data: {
list:['item-A','item-B']
},
next: function(e){
wx.navigateTo({
url: '/test/test?list='+JSON.stringify(this.data.list),
})
}
})
Page({
data:{
list:[]
},
onLoad:function(options){
console.log("接收到的參數是list="+options.list);
this.data.list = JSON.parse(options.list);
}}) |
打印內容:接收到的參數是list=["item-A","item-B"]
var dealParam = function(data) {
for(var i in data) {
if (typeof data[i] == ‘string’){
console.log(“key=”+i+“; value=”+data[i]);
} else if (typeof data[i] == ‘object’) {
dealParam(data[i]);
}
}
}
} |