uni-app返回上一级
原因:虽然uniapp跳转方式可以用vue中params和query方式,但是在有一些页面我们需要返回上一个页面,是返回一个页面如果我们用$retouer.push()方法会跳转一个新页面,导致在下程序中返回其他页面需要返回好几次,uniapp官网上用uni.navigateBack({delta: 1})中间的参数是返回上几层页面,但是官网没有给传参的方法。下面记录一种方法
在一个B页面,需要返回上一级A页面
//这个是写在小程序中的methods中的函数
Backhaul(name, plate, carid) {
let car_name = name;
let car_plate = plate;
let car_id = carid;
uni.setStorageSync('car_name', name);
uni.setStorageSync('car_plate', plate);
uni.setStorageSync('car_id', car_id);
//从这里开始为传参所需要的代码
let pages = getCurrentPages();//获取页面实例
let nowPage = pages[pages.length - 1];//当前页面实例
let prevPage = pages[pages.length - 2];//上一级页面实例
console.log('qqq', pages, nowPage, prevPage)
let carobj = {
flag: 1, //代表从选择门店返回
car_id,
car_name,
car_plate,
showKu: true
}
//在这个地方向上一个页面的实例的函数传递一个参数
//Backcardaa函数是A页面中封装的函数
prevPage.$vm.Backcardata(carobj)
uni.navigateBack({
delta: 1
})
},
A页面,从B页面返回的页面
//这个函数是写在A页面的methods中
Backcardata(carobj) {
let that = this;
let car_obj = carobj;//这个地方可以不写 下面直接用 carobj,我是因为其他原因替换一下
// console.log("1111");
// console.log(carobj);
//这个地方先判断传递过来的参数有没有内容
if (car_obj) {
console.log('这是传递过来的车辆信息',
car_obj);
let CarName = car_obj.car_name;
let CarPlate = car_obj.car_plate;
that.carName = CarName;
that.carPlate = CarPlate
} else {
that.carName = uni.getStorageSync('car_name');
that.carPlate = uni.getStorageSync('car_plate');
}
},