我在AngularJS应用中使用ui-router进行页面路由。我遇到一个问题,如果我点击页面上的超链接引用我已经开启的页面/路线(即自己),则不会发生任何事情。
例如,如果您在页面中间向下滚动并单击引用当前页面的超链接,则看起来链接似乎没有加载,实际上没有什么需要当用户已在右页时加载。
这种情况下的目标是将视口移动到页面顶部,但是我无法从ui-router获取此事件的任何事件。我尝试了$ stateChangeStart和$ stateChangeSuccess,但由于没有发生路由更改,因此不会触发。
我的网址格式为http://localhost:3000/projects/myproject,ui-router的配置如下:
state('app.projects', {
url: '/projects/:projectname',
templateUrl: 'projects.html',
controller: 'ProjectsCtrl'
}).
如果不在控制器中添加额外的逻辑(这会混淆自然的href =" projects / myproject"格式),可以做些什么来实现这个目标?
答案 0 :(得分:1)
没有控制器:
<a ui-sref="stateName({reload: true})" target="_blank">Link Text</a>
使用控制器:
$state.go($state.name, {}, {reload: true});
答案 1 :(得分:0)
您只需在链接末尾使用#
即可。 href="projects/myproject#"