当我们写小程序,需要在子级页面往父级页面传值的话,可以这样做:
(通过wx.navigateTo()或my.navigateTo()跳转的页面我称之为子级页面,wx.navigateBack()或者my.navigateBack()跳回去的页面我称之为父级页面)
const pages = getCurrentPages(); //获取页面栈堆
const prev = pages[pages.length - 2]; //-2即为父级页面,想跳两层的话就-3
const data = this.data.data //data为当前页面的data,要赋值到父页面
let ads = prev.data.dataName //dataName为父级页面想要赋值的变量名,此处必须定义变量承载父页面变量
//比如保存之后想把保存后拿到的ID赋值到父页面(如果只赋值的话,可以直接my.navigateBack(),然后直接在父页面的onShow()里重新GET数据)并且使之选中
data.checked = true //给当前数据追加选中
data.id = res.data.data.address.id //给当前数据追加保存成功后返回的id
ads.forEach( function(me) {
me.checked = false //把父页面全部改为未选中
})
ads.push(data)//把当前页面的数据赋值到变量里
prev.setData({ //用setData()的特性给父级页面赋值并重新渲染
adsData: ads
})
my.navigetBack()