AngularJS/ui.router返回上一页

最近在做老项目优化,发现原本“返回上一页”的功能,非常凌乱、可读性很差。

具体的场景是这样的

A、B、C等多个页面都可以进入到D页面,D页面里有一个“返回上一页”功能,由于D页面里有iframe每次加载都会添加浏览记录,导致history.go(-1)不能返回想要的上一页。

于是全部通过一个historyUrlService管理,在ABC页面跳转到D之前,保存来源,在D页面返回上一页的时候读取这个来源,然后手动进行跳转。

这个实现问题非常大,可能写的人熟悉业务觉得没问题,反正我看的时候全局搜索看了半天,如果再多几个入口和出口,基本就没人能看懂了吧。

我的解决方法是这样的

不要做这么多加法,回到最初的起点,浏览器默认的记录不好用就自己维护一套,需要回退的时候找出来加载就行了。

项目使用了ui.router,就结合这个库提供的路由事件 $stateChangeSuccess 它在路由转换完成后触发。

很简单的几行代码不需要太多说明,页面跳转完成之后保存这次的访问记录在 $rootScope.historyStack 数组里,返回上一级的时候先把当前页面的记录删掉,再获取上一个页面的记录并删掉,最后跳转过去

$rootScope.historyStack = $rootScope.historyStack 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值