開發小程序,老是避免不了頁面和頁面之間數據共享,實現方法有不少種,今天就詳細講解下小程序頁面傳值,須要的朋友能夠參考下。小程序
1 使用wx.navigateTo()傳值數組
這種傳值方式有兩種,緩存
url後面拼接傳值:須要跳轉的應用內非 tabBar 的頁面的路徑 (代碼包路徑), 路徑後能夠帶參數。參數與路徑之間使用 ? 分隔,參數鍵與參數值用 = 相連,不一樣參數用 & 分隔;如 'path?key=value&key2=value2'微信
1.url後面拼接傳值app
wx.navigateTo({ url: 'test?id=1', }) test頁面接收數據 Page({ onLoad: function(option){ console.log(option.query) } })
2.events頁面間通訊接口ide
wx.navigateTo({ url: 'test', events: {}, success: function (res) { res.eventChannel.emit('goTest', { data: {id:1,content:'hello word'} }) } })
test頁面接收數據函數
Page({ onShow: function () { let that = this const eventChannel = that.getOpenerEventChannel() eventChannel.on('goTest', function (data) { console.log(data) }) }, })
2 數據緩存this
利用微信提供的wx.setStorage()、wx.setStorageSync()、wx.getStorage()、wx.getStorageSync()等APIurl
當前頁傳數據,爲確保數據已經進入緩存,最好用同步code
wx.setStorageSync('data', {data:"數據"})
目標頁,在須要用的地方獲取
let data= wx.getStorageSync('data')
3 頁面棧傳值
getCurrentPages() 函數用於獲取當前頁面棧的實例,以數組形式按棧的順序給出,第一個元素爲首頁,最後一個元素爲當前頁面。
let pages = getCurrentPages(); console.log(pages)
查看log
須要修改數據的頁面
currPage = pages[pages.length - 1] currPage.setData({ data:'hello word' })
注意:
不要嘗試修改頁面棧,會致使路由以及頁面狀態錯誤。
4 app.js保存全局屬性
app.js配置全局屬性
globalData: { userInfo: null }
須要使用的頁面
const app = getApp() let userInfo = app.globalData.userInfo
須要改變app.js的值
const app = getApp() app.globalData.userInfo= "hello word"