Angular 没有承诺的锚定卷轴

Angular Anchor Scroll without Promise

我正在尝试在 Angular 1.x 中使用一个非常简单的 scrollTo。我有导航菜单 link,点击后应该滚动到 div#id。我只能让它与 'promise'.

一起使用

例如,这个有效:

<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');
};

好像需要一个承诺,但要在没有承诺的情况下通过简单的点击让它工作?

希望下面的代码有用:

在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();
    }
})

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