【发布时间】:2015-07-16 03:19:54
【问题描述】:
TL;DR:使用 Angular UI Router,是否可以自动滚动到显示它的模板所属的相同状态的视图?
设置
我有一个 Angular 1.4.1 应用程序,使用 UI Router 0.2.15 和 Angular Material 0.10.0。
有一个称为website 的父状态和三个子状态:home、foo 和bar。
父状态有一个wrapper 视图,通过index.html 中的<ui-view> 标签显示。它还有另外两个视图,header@website 和 footer@website,通过 wrapper 视图模板显示。
三个子状态中的每一个都有一个main 视图,通过父状态的wrapper 视图模板显示。
我的期望
在父状态的wrapper 视图模板中,当我在ui-view 标记上为header@website 视图设置autoscroll="true" 时,我希望每当状态更改时页面都会滚动到顶部。请参阅this SO question 接受的答案。
发生了什么
当点击页脚中的任何ui-sref 链接时,页面不会滚动到顶部。
我的尝试
如果我将autoscroll="true" 放在主视图的ui-view 标记上,它会按预期工作。然而,这不是我想要的,因为即使您从地址栏导航到某个状态,标题也会从视图中隐藏。
我的怀疑
我认为问题在于header@website 是属于website 状态的视图,而autoscroll 仅适用于通常显示在当前模板上的视图。换句话说,通常header 视图将通过index.html 显示,而不是wrapper.html。
问题
我的怀疑是正确的吗?我是否需要重构,或者有没有办法让它按原样工作?
提前致谢!
【问题讨论】:
-
根据记忆,您的假设是正确的。我过去曾通过主视图元素上的 CSS 顶部填充来解决此问题
-
谢谢,菲尔。我只是尝试重构 Plunk 来测试我的理论,但它仍然不起作用。请参阅此示例:plnkr.co/edit/TWdFCjRoUyUEOSteJzqQ?p=preview
标签: javascript angularjs angular-ui-router autoscroll