Angularjs $anchorScroll和$location仅在第二次尝试后有效
我正在尝试使用Angularjs $anchorScroll和$location仅在第二次尝试后有效,angularjs,Angularjs,我正在尝试使用$anchorScroll和$location.hash()滚动到div。我在这一页的顶部有一个底部。当我单击底部时,我希望页面向下滚动到页面底部,在那里我有一个 由于某些原因,我第一次单击按钮时,我的页面不会滚动。如果第二次单击,页面会滚动。之后,滚动工作正常。如果我刷新页面,这种奇怪的行为就会重现 我的控制器中有以下代码: $scope.scrolldown = function() { $location.hash('target'); $anchorScroll()
$anchorScroll
和$location.hash()
滚动到div
。我在这一页的顶部有一个底部。当我单击底部时,我希望页面向下滚动到页面底部,在那里我有一个
由于某些原因,我第一次单击按钮时,我的页面不会滚动。如果第二次单击,页面会滚动。之后,滚动工作正常。如果我刷新页面,这种奇怪的行为就会重现
我的控制器中有以下代码:
$scope.scrolldown = function() {
$location.hash('target');
$anchorScroll();
}
我知道$location.hash('target')
行应该在我的URL末尾附加一个哈希值
以下是我的页面首次加载时的URL:
http://run.plnkr.co/iqvdGjdeCP4idP4D/
在我第一次单击我的按钮后,它变成:
http://run.plnkr.co/iqvdGjdeCP4idP4D/#/target
http://run.plnkr.co/iqvdGjdeCP4idP4D/#/target#target
这是不对的(而且页面没有正确滚动)
在我第二次单击我的按钮后,它变成:
http://run.plnkr.co/iqvdGjdeCP4idP4D/#/target
http://run.plnkr.co/iqvdGjdeCP4idP4D/#/target#target
从这一点开始,页面开始正确滚动,但URL对我来说仍然很奇怪——为什么我需要两个哈希值
我想知道为什么按钮只在第二次点击后才起作用,以及如何纠正它
更新
我在代码中添加了路由,现在卷轴可以正常工作了。
下面是看看这个问题,其中包含一个可能的解决方案: 它在您第二次单击按钮时起作用,因为散列不会更改(因此路由不会重新加载)。注意到第一次单击页面时页面会闪烁吗?这表明整个DOM已被重新呈现