当前位置: 首页 > 面试题库 >

Angular重新加载当前路线并重新加载当前模板

苍宜修
2023-03-14
问题内容

当用户访问未经授权的个人页面(例如个人资料)时,我的后端302重定向到控制器操作,该操作代替部分个人资料来提供登录部分。由于它302重定向到返回部分操作的动作,因此URL地址栏与用户尝试访问的页面(“
/ profile”)没有变化。

我本来打算“修复”该问题,但实际上我认为它可以提供良好的用户体验,而不是将返回网址作为查询html" target="_blank">参数来处理。

想法是一旦他们登录,我只想重新加载当前路由,也可以通过“ / profile”对配置文件部分执行GET请求,然后将其切换回而不是登录部分。

但是,我无法使“重新加载当前路线”正常工作。我尝试了以下所有方法:

$location.$$compose();
$location.absUrl($location.path());
$location.url($location.path());
$location.path($location.path())
$route.reload();

但是没有任何作用。$ route.reload()似乎是确定的方法,但它也不起作用。它经历了路由周期,重新实例化了控制器,但不执行GET请求来重新加载模板

唯一有效的方法是强制刷新,location.reload()但这并不理想。

如何强制angular重新加载当前路线的模板?


问题答案:

好的,我在Github上找到了lgalfaso提供的解决方案(精确粘贴):

模板被缓存,如果用户没有进入页面的权限,则此检查应在到达控制器之前或之后在控制器内进行,而不是在模板检索上进行

如果这是您要遵循的方式,则需要在调用reload之前从$ templateCache中删除模板。

这样对我有用,因为登录模板实际上被缓存为用户尝试访问的模板。因此,将其删除并让角度重新获取当前路线的正确路线就像一种魅力。

var currentPageTemplate = $route.current.templateUrl;
$templateCache.remove(currentPageTemplate);
$route.reload();


 类似资料:
  • 本文向大家介绍angular-ui-router 重新加载当前状态,包括了angular-ui-router 重新加载当前状态的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用$state.reload控制器中的方法重新加载当前状态 这是的简写(摘自官方文档的代码) 在您的状态上运行重载也会重新启动控制器并重新解析所有已解析的值。

  • 我正在使用Angular UI路由器,希望重新加载当前状态并刷新所有数据/重新运行当前状态及其父级的控制器。 我有3个州级:directory.organisations.details 目录组织包含一个包含组织列表的表。单击表loads目录中的项目。组织。$StateParams传递项目ID的详细信息。因此,在详细信息状态下,我加载此项目的详细信息,编辑它们,然后保存数据。目前一切正常。 现在我

  • 问题内容: 我正在使用Angular UI Router,并希望重新加载当前状态并刷新所有数据/为当前状态及其父级重新运行控制器。 我有3个状态级别: directory.organisations.details directory.organisations 包含一个带有组织列表的表。单击表中的一个项目将加载$ directoryParams传递该项目的ID的 directory.organi

  • 本文向大家介绍AngularJS中重新加载当前路由页面的方法,包括了AngularJS中重新加载当前路由页面的方法的使用技巧和注意事项,需要的朋友参考一下 这个问题同样困扰我很久,网上的回答五花八门,全都不能解决;终于在网上找很久,看到某大神的解决办法,整理作此分享;使用ui-router重新加载当前页面的问题。(ui-router版本需要是0.2.14以上的) 用angular做项目,会碰到需要

  • 问题内容: 我有一个抽象的基本模板,可根据用户类型加载导航。这部分适用于初始加载。问题是用户登录或注销后无法重新加载父templateProvider。我在这里尝试了重新加载父模板的解决方案,但是导航模板不受影响。有没有一种方法可以重新加载templateProvider,或者这样做的更好的方法?理想情况下,我不必将导航提供商添加到每个子路线。 路线: 尝试从github问题发出的控制器功能: 问

  • 问题 你想重新加载已经加载的模块,因为你对其源码进行了修改。 解决方案 使用imp.reload()来重新加载先前加载的模块。举个例子: >>> import spam >>> import imp >>> imp.reload(spam) <module 'spam' from './spam.py'> >>> 讨论 重新加载模块在开发和调试过程中常常很有用。但在生产环境中的代码使用会不安全,因