在開發(fā)微信小程序時违崇,需要在一個頁面做選擇操作土辩,然而選擇面板很大遭赂,需要使用單獨的子頁面來展示,這時用到wx.navigateBack()方法臭增,但是怎么樣將選擇好的值回傳給父組件呢懂酱?
使用wx.navigateTo({? url: "/pages/mypage/mypage?a=1&b=2"}),這種方式只有在目標頁面還沒有創(chuàng)建的時候速址,才有效玩焰。因為一個頁面的onLoad方法在頁面的生命周期中,只執(zhí)行一次芍锚。并且子組件頁面會被壓入頁面棧中昔园。
這時需要使用wx.navigateBack()方法,參數(shù)的回傳有一下幾種方法:
? ??方法1:使用全局數(shù)據(jù)存儲
將要傳遞的數(shù)據(jù)并炮,存儲在App對象上(比如globalData屬性)默刚。
將要傳遞的數(shù)據(jù),存儲在小程序的本地數(shù)據(jù)緩存(Storage)中逃魄。
? ??1. 存儲到app對象上的方式 varapp = getApp()app.globalData.mydata = {a:1,b:2};/
存儲數(shù)據(jù)到app對象上wx.navigateBack();
返回上一個頁面
?2.存儲到數(shù)據(jù)緩存的方式
wx.setStorage({key:"mydata",data: {a:1,b:2},success:function(){ wx.navigateBack();//返回上一個頁面}})
方法2:從頁面路由棧中直接獲取和操作目標Page對象
這種方式荤西,是通過調用小程序的API: getCurrentPages(),來獲取當前頁面路由棧的信息伍俘,這個路由棧中按照頁面的路由順序存放著相應的Page對象邪锌,我們可以很容易的獲取到上一級頁面的完整Page對象,從而使直接調用Page對象的屬性和方法成為可能癌瘾。
var pages = getCurrentPages();
varcurrPage = pages[pages.length -1];//當前頁面
varprevPage = pages[pages.length -2];//上一個頁面
//直接調用上一個頁面的setData()方法觅丰,把數(shù)據(jù)存到上一個頁面中去
prevPage.setData({? mydata: {a:1, b:2}})