ui-route子路由切换重复点击不重新加载问题

本文介绍了解决Angular UI-Router框架下同一路由重复点击不重新加载的问题。作者通过尝试多种方法最终发现使用$state.reload()并更换UI-Router版本来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个不得不说的项目之坑。先描述问题,用angular框架做的项目,路由用的ui-router。奇怪的是进入一个路由之后,再重复点击当前路由对应菜单,这个路由对应的html、js并不会重新加载,连缓存都不取,是压根儿没反应。angular也用了好久了,说实话这个问题一直没遇到过,其实不是遇到,应该说是没发现。

经过多次试验和百度,我自己找到两个损招,就分享一下,项目上还是不要用了,太损了。实验中发现当前路由如果切换到其他路由,在进入就可以重新加载。基于这一点,我心生邪念,想了个损招。

在每次点击菜单切换路由时,先切到一个没有实际意义的路由,我叫它假路由。假路由对应一个空页面,这个空页面init时再跳回实际上想去的路由。这种办法依次点击菜单操作要跳两个路由,太恶毒。



第二个办法是把菜单放到最外层ui-view外面,这样每个页面都会看到菜单,如果有的页面不想展示还需要手动隐藏,这样感觉ui-route路由嵌套就废了,这招我也不能接受。

再后来上git发现$state有个reload可以解决,具体写法如下

$scope.go=function(){
	$state.reload($state.current.name);//$state需要注入
	$state.go(url, params);
}
然而,这样写了之后我的项目依然没有达到我的预期,我开始怀疑人生,后面和部门同事探讨了一下,感觉有可能是ui-route版本可能有问题,然后就换了一个版本

https://cdn.bootcss.com/angular-ui-router/0.4.3/angular-ui-router.js。 这样这个问题才解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值