【发布时间】:2015-12-22 12:42:54
【问题描述】:
我刚收到我们的 QA 团队的请求,我认为这听起来很荒谬。在这里:假设您已经在基于角度的应用程序中的“关于”状态/页面上,并且当您再次从顶部菜单中单击“关于”状态 url 时,您希望“关于”页面重新加载。 about 页面不会从任何地方获取数据,顺便说一下,重新加载就相当于眨眼。
对于我的 Angular 应用程序中的状态配置是这样的:
.state('about', {
url: '/about',
templateUrl: '/path/to/about.html',
controller: 'aboutCtrl as aboutView'
});
在顶部菜单中,我们有一个指向这个状态的链接:
<a ui-sref="about">About</a>
我已经尝试了很多方法来让它工作:点击链接会触发相同状态的重新加载。
$state.go('about', {}, {reload: true}); 或 $state.transitionTo('about', {}, {reload: true}); 之类的东西不起作用,因为链接是静态的。
我目前正在尝试的最后一个方法是通过侦听'$stateChangeSuccess' 事件来操纵 Angular 的run 阶段中的重新加载事情,但我认为它不会起作用,因为如果当您处于该状态时,您点击'about' 链接。
有没有办法解决这个问题?谢谢
【问题讨论】:
-
我不认为重新加载 about 页面(我假设它是静态的)是一个好方法,原因有几个 - 你的应用程序应该只向用户表明他们已经在那个页面上。一个很好的例子是 Material Design 的动画,当你反复点击同一个标签时 - material.angularjs.org/latest/#/demo/material.components.tabs
-
或我一直在考虑的另一种策略是当用户已经处于该状态时使该链接不可点击(不是超链接),因此这将迫使用户刷新浏览器,但我真的不想在我的控制器中引入不必要的逻辑。
标签: javascript html angularjs angular-ui-router reload