擅长白癜风诊治 http://m.39.net/news/a_5567155.html项目中会涉及这样的需求,点击进入二级页面进行选择,选择后确认回到一级页面,并将所选的信息同步到一级页面中,比如下单流程选地址、切换账号等。小程序中返回操作经常使用的操作是wx.navigateBack()返回一级页面,但wx.navigateBack()不能像其他导航一样通过url传参,因此只能与其他操作配合使用:先说两个可以实现需求的方法:1、将数据存到app.globalData中,然后返回上一页面从全局数据中获取弊端:globalData数据为全局数据,操作需谨慎,牵一发而动全身。2、将数据存到本地缓存中localStorage,然后返回上一页面从从缓存中获取弊端:本地缓存空间大小存在限制,空间不足时会自动清除其中最久未使用的数据,同样可能会造成意想不到的影响。
还有一个个人认为比较完美的解决方案,不会存在以上弊端:
使用getCurrentPages()函数获取当前页面栈,可以得到一个按页面栈的顺序组成的数组,第一个元素为首页,最后一个元素为当前页面。
第一步,在二级页面中使用getCurrentPages()获取当前页面栈,然后直接调用上一级页面的setData()方法,把数据存到上一级页面中去。
varpages=getCurrentPages();varprevPage=pages[pages.length-2];//获取上一个页面prevPage.setData({addr:{name:JackMa,phoneNumber:,content:浙江省杭州市余杭区文一西路号,posCode:}})//返回操作wx.navigateBack({delta:1})
第二步,在一级页面data里建一个addr对象,如果传过来的是字符串,addr建立为字符串,数据类型对应一下会比较好。在父组件里的onshow生命周期里获取传进来的参数。
varpages=getCurrentPages();varcurrPage=pages[pages.length-1];//获取当前页面console.log(currPage.data.addr)//获取传过来的参数writeinC