小程序開發過程當中常常有這種需求,須要把當前頁面數據傳遞給上一個頁面,可是wx.navigateBack()沒法傳遞數據。javascript
通常的辦法是把當前頁面數據放入本地緩存,上一個頁面再從緩存中取出。java
除此以外還有一種辦法,巧妙利用頁面棧。小程序
getCurrentPages() 函數用於獲取當前頁面棧的實例,以數組形式按棧的順序給出,第一個元素爲首頁,最後一個元素爲當前頁面。數組
重點就在這裏,在當前頁面拿到上一個頁面的實例對象,而後調用該對象的方法完成數據傳遞。緩存
頁面A微信
Page({ data: { name: '' }, ... , //更新name changeData: function(name){ this.setData({ name: name }) } })
頁面B,假設有一個文本框用於輸入姓名,點擊返回按鈕後更新頁面A的name函數
Page({ //此方法用於文本框輸入回調 inputTyping: function (e) { //獲取頁面棧 var pages = getCurrentPages(); if(pages.length > 1){ //上一個頁面實例對象 var prePage = pages[pages.length - 2]; //關鍵在這裏 prePage.changeData(e.detail.value) } } })
這樣就能夠實現數據傳遞給上一個頁面,要注意頁面A必須使用wx.navigateTo跳轉到頁面B,不能使用wx.redirectTo,這樣會關閉上一個頁面,致使頁面B沒法獲取上一頁Page實例。學習
你也能夠關注個人微信公衆號『ITNotes』, 一塊兒交流學習 。
this