没有承诺的角锚滚动

时间:2017-09-16 10:27:43

标签: angularjs promise anchor-scroll

我试图在Angular 1.x中使用一个非常简单的scrollTo。我有naviagation菜单链接,点击时应滚动到div#id。我只能用“承诺”来实现这一点。

例如,这有效:

<li><a href="#" ng-click="tracking()">Go to Tracking</a></li>


$scope.tracking = function() { // go to tracking when header button is clicked
        $http.get('/includes/modules/get_home_destinations.php')
        .then(function(reply){
            if (reply.data) {
                $scope.destinations = reply.data;
                $location.hash('home-tracking');
            }         
        });
    };

但这没有回应:

$scope.tracking = function() { // go to tracking when header button is clicked
     $location.hash('home-tracking');
};

就好像需要一个承诺,但是为了让这个在没有承诺的简单点击上工作?

2 个答案:

答案 0 :(得分:1)

希望以下代码有用:

html文件中的

<div id="home-tracking">
    <h1>Home Traking Content</h1>
</div>

<a ng-click="tracking()">Go to Tracking</a>
控制器文件中的

angular.module('trackingApp').controller('TrackingCtrl', function($location, $anchorScroll) {
    $scope.tracking = function() {
          $location.hash('home-tracking');
          $anchorScroll();
    }
})

答案 1 :(得分:1)

这是因为href =&#34;#&#34;我猜。因为首先,href将页面重定向到&#34;#&#34;然后承诺以延时执行并将页面重定向到所需位置。但没有承诺,没有时间延迟,代码立即执行,并且href重定向页面到#&#39;#&#39;并且页面卡在那里。