我有一个应用程序,一旦单击按钮,该应用程序就会从JSON文件中显示数据(ng-show
)。
我遇到的麻烦是anchorScroll,它只有在两次单击按钮后才会滚动到锚点。我需要它才能在第一次点击时起作用。
这是应该发生魔术的地方,但不是
var onSearchComplete = function(results){
$scope.showResults = true; //ng-show listens for this to be true
$scope.results = results;
$timeout(function() {
$location.hash('resultsAnchor');
$anchorScroll();
});
};
这是我所知道的:
第一次点击:最初,我的URL以
url/#/
开头,然后单击按钮,附加了
#resultsAnchor
,所以我的URL现在是url/#/#resultsAnchor
。带有我的数据的
ng-show div
将出现在一个实例中,然后消失。由于数据不存在,所以没有anchorScroll发生。
现在,我的网址设置为
url/#/#resultsAnchor
,然后第二次单击ng-show div出现,页面滚动到数据。
一站式制止这种现象的原因是什么?
注意:我添加了$ timeout函数,因为否则它将需要单击三下。单击1-将锚添加到URL,单击2-出现数据,单击3-页面滚动。
最佳答案
我只是遇到了类似的问题,并且通过将位置的前缀添加到哈希中得到了纠正。
location.hash = '/details#memberTop';
$anchorScroll();
最终导航到:
url /#/ details#memberTop
关于javascript - Angular $ anchorScroll不能很好地与ng-show一起玩,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33054520/