我有一个应用程序,一旦单击按钮,该应用程序就会从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/

10-11 22:16
查看更多