功能需求:在做查看订单页面的时候,有待支付、已完成,已取消,已退款几种,点击查看订单详情后返回的时候,要回到上一次点击的状态(待支付、已完成,已取消,已退款)这个时候就需要缓存点击的哪一项,返回的时候设置。
1、在要返回的页面中加载后或者请求成功后添加以下代码:
onLoad: function (options) {
var pages = getCurrentPages(); \\当前页面
var prevpage = pages[pages.length - 2] \\上一个页面
prevpage.setData({ \\这是要往上个页面传的数据
chuandata:{
tabindex:options.tabindex
}
})
}
注:我这里是写在了onload中,并且在上一个页面跳转的时候传了点击项的索引,再通过setdata设置把数据返到上一个页面。
2、在要接收的组件onshow生命周期中来获取传递的参数,得需要先建立一个chuandata对象,如果传过来得是字符串,chuandata就建立字符串,总之要一一对应。代码如下:
onShow: function () {
var pages = getCurrentPages();
var currentpage = pages[pages.length-1] \\当前页面
var json = currentpage.data.chuandata \\ 获取chuandata对象
if(json!=undefined){
var tabindex1 = parseInt(json.tabindex)+1
this.orderlist(tabindex1) \\获取选中项的订单列表
this.setData({
tabindex: json.tabindex \\设置选中项的索引
})
}
},
注:这里加个判断是为了防止报错,因为onshow是在页面显示的时候调用,当用户直接进入查看订单页面,这时候并没有进入查看详情,这时候是没有传json这个对象的,会报错显示未定义,所有这时候就判断一下有了再接收即可。