Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $anchorScroll和$location仅在第二次尝试后有效_Angularjs - Fatal编程技术网

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已被重新呈现