Javascript 角度UI路由器:在标题视图上设置自动滚动不会滚动到顶部
TL;DR:使用Angular UI Router,是否可以自动滚动到显示它的模板所属的相同状态的视图 设置 我有一个角度Javascript 角度UI路由器:在标题视图上设置自动滚动不会滚动到顶部,javascript,angularjs,angular-ui-router,autoscroll,Javascript,Angularjs,Angular Ui Router,Autoscroll,TL;DR:使用Angular UI Router,是否可以自动滚动到显示它的模板所属的相同状态的视图 设置 我有一个角度1.4.1应用程序,使用UI路由器0.2.15和角度材质0.10.0 有一个称为网站的父状态和三个子状态:主页、foo和栏 父状态有一个包装器视图,该视图通过index.html中的标记显示。它还有另外两个视图,header@website和footer@website,它通过包装器视图模板显示 三个子状态中的每一个都有一个main视图,该视图通过父状态的wrapper视图
1.4.1
应用程序,使用UI路由器0.2.15
和角度材质0.10.0
有一个称为网站的父状态
和三个子状态:主页
、foo
和栏
父状态有一个包装器
视图,该视图通过index.html
中的
标记显示。它还有另外两个视图,header@website
和footer@website
,它通过包装器
视图模板显示
三个子状态中的每一个都有一个main
视图,该视图通过父状态的wrapper
视图模板显示
我的期望
在父状态的包装器
视图模板中,当我在ui视图
标记上为header@website
view,我希望只要状态发生变化,页面就会滚动到顶部。请参阅的公认答案
发生了什么事
单击页脚中的任何ui sref
链接时,页面不会滚动到顶部
我尝试过的
如果我将autoscroll=“true”
放在主视图的ui视图
标记上,它将按预期工作。然而,这不是我想要的,因为即使从地址栏导航到某个状态,标题也会隐藏在视图中
我所怀疑的
我认为问题与header@website
是属于网站
状态的视图,自动滚动
仅适用于通常显示在当前模板上的视图。换句话说,通常情况下,标题
视图将通过index.html
显示,而不是wrapper.html
问题
我的怀疑是正确的吗?我是否需要重构,或者有没有办法让它保持原样
提前谢谢 尽管我不主张在指令之外进行DOM操作,但一个快速而肮脏的解决方案是在顶级模块定义的
块中添加一个scrollTo方法
.run(function ($window, $rootScope) {
$rootScope.$on('$viewContentLoaded', function () {
var interval = setInterval(function () {
if (document.readyState == "complete") {
window.scrollTo(0, 0);
clearInterval(interval);
}
}, 1);
});
})
(从这里借来)
我尝试使用ui router的$anchorScroll()
方法,但由于链接位于页面底部,因此页面滚动到该位置,因此您实际上没有注意到它在做任何事情。从内存中,您的假设是正确的。我过去通过CSS在主视图元素上的顶部填充来解决这个问题谢谢,Phil。我只是尝试重构Plunk来测试我的理论,但它仍然不起作用。看看这个例子:谢谢Jaked1…我在研究中也看到了这个解决方案,但我并不热衷于使用它,因为据推测UI路由器的autoscroll属性已经解决了这个问题。我只是想知道我看到的是autoscroll使用该服务时的一个bug,还是我只是做错了什么。