我试图在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');
};
就好像需要一个承诺,但是为了让这个在没有承诺的简单点击上工作?
答案 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;并且页面卡在那里。