#使用挂载全局变量跟踪无序navigate页面的跳转
通常我们在使用uni.navigateto()函数时,希望页面能够逐级展开,并能逐级返回。但是有时候我们的页面打开顺序或者说优先级是同级的,这个时候如果一昧的使用navigateto()跳转,势必会使得我们在页面返回的时候造成返回混乱,如果每次跳转都采用关闭页面并打开新页面的方式,又会使得页面频繁与后端交互,增加页面负担。所有我希望能够记录页面的打开路径,在返回的时候能够有序返回。
##在main.js中挂载全局变量
p
a
g
e
L
i
s
t
,
记
录
页
面
跳
转
的
路
径
在
u
n
i
−
a
p
p
项
目
中
找
到
m
a
i
n
.
j
s
文
件
,
在
其
中
挂
载
全
局
变
量
:
V
u
e
.
p
r
o
t
o
t
y
p
e
.
pageList,记录页面跳转的路径 在uni-app项目中找到main.js文件,在其中挂载全局变量: Vue.prototype.
pageList,记录页面跳转的路径在uni−app项目中找到main.js文件,在其中挂载全局变量:Vue.prototype.pageLists = []; 用于记录页面跳转的路径
##每次跳转新页面的时候,将当前页面的参数记录到
p
a
g
e
L
i
s
t
s
数
组
中
首
先
我
们
需
要
为
每
个
页
面
设
置
一
个
页
面
编
号
:
p
a
g
e
I
n
d
e
x
当
我
们
的
页
面
需
要
跳
转
到
其
他
页
面
的
时
候
,
首
先
判
断
即
将
跳
转
的
页
面
参
数
是
否
在
我
们
的
pageLists数组中 首先我们需要为每个页面设置一个页面编号:pageIndex 当我们的页面需要跳转到其他页面的时候,首先判断即将跳转的页面参数是否在我们的
pageLists数组中首先我们需要为每个页面设置一个页面编号:pageIndex当我们的页面需要跳转到其他页面的时候,首先判断即将跳转的页面参数是否在我们的pageLists历史页面记录中,如果在,则调用您。navigateBack()方法返回。如果不存在,则说明需要跳转的页面为新页面。则将当前页面的参数传入$pageLists中,并使用navigateto()跳转到新页面。
goTab:function(e){
var pageIndex = this.pageIndex;
var goPageNum = e;
var delaNum = -1;
var pageNum = this.$pageLists.length;
if(pageIndex!=goPageNum){
for (let i = 0; i<pageNum;i++){
console.log('历史页面'+this.$pageLists[i]);
if(goPageNum==this.$pageLists[i]){
delaNum = pageNum-i;
}
if(delaNum>=0){
this.$pageLists.pop();//掉用back返回后需要将页面历史路径更新,要和页面堆栈同步
}
}
if(delaNum>=0){
console.log('调用back')
uni.navigateBack({
delta:delaNum
});
}
else {
console.log('调用to')
this.goTabUrl(goPageNum);
}
}
},