小程序setData()给上一层页面赋值并重新渲染

当我们写小程序,需要在子级页面往父级页面传值的话,可以这样做:

(通过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()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值