当使用者访问私人页面未经授权时,请查看个人资料,我的后端302将重定向到控制器操作,该操作可以用于部署登录,而不是部分配置文件.由于它302重定向到返回部分的操作,所以URL地址栏不会从用户尝试访问的页面(“/ profile”)中更改.
我要“修复”,但实际上我认为这样做是一个很好的用户体验,而不是处理返回url作为查询参数.
这个想法是一旦他们登录,我只想重新加载当前的路由,再次通过“/ profile”对配置文件partial进行GET请求,并将其重新切换而不是登录部分.
但是,我不能得到这个“重新加载当前路由”工作.我尝试了以下所有内容:
$location.$$compose(); $location.absUrl($location.path()); $location.url($location.path()); $location.path($location.path()) $route.reload();
但没有工作. $route.reload()似乎是确定的方式,但它也不起作用.它通过路由周期,重新控制控制器,但不执行GET请求来重新加载模板
唯一有效的是通过location.reload()进行硬刷新,但这不是理想的.
如何强制有角度重新加载当前路由的模板?
好的,我发现lgalfaso在Github上提供的解决方案(精确粘贴):
原文链接:https://www.f2er.com/angularjs/142684.htmlTemplates are
cached,if a user does not have the permissions to be in a page,then
this check should be done before it reaches the controller or after,
within the controller,but not on the template retrievalIf this is the way you want to follow,then you need to remove the
template from the $templateCache before you call reload
所以这对我来说是有效的,因为登录模板实际上被缓存为用户试图访问的模板.所以删除它,并让角度重新获取当前路线正确的一个像一个魅力.
var currentPageTemplate = $route.current.templateUrl; $templateCache.remove(currentPageTemplate); $route.reload();