微信小程序之更新上一頁數據(十二)


小程序開發過程中經常有這種需求,需要把當前頁面數據傳遞給上一個頁面,但是wx.navigateBack()無法傳遞數據。

一般的辦法是把當前頁面數據放入本地緩存,上一個頁面再從緩存中取出。

除此之外還有一種辦法,巧妙利用頁面棧。

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』, 一起交流學習 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM