@fantom0005

Как сделать якорные ссылки с AngularJS?

Как сделать чтобы работали якорные ссылка с ангуляром? суть такая есть странца с кодом:
<a href="#info">info</a>
<section id="info">
Info....
</section>

Обычно все работает, но если подключить ангуляр, то вместо index#info в адресной строке появляется index/#/info и соответственно никакого перехода не происходит.
Как это сделать без костылей и хардкода, ведь думаю создатели ангуляра должны были позаботится о навигации внутри страницы?
  • Вопрос задан
  • 1729 просмотров
Решения вопроса 1
Тут всё не очень просто.
Есть вот такой сервис: https://docs.angularjs.org/api/ng/service/$anchorScroll
С помощью него можно делать что-то такое:
<div ng-click='scrollTo("info")'>go to info</div>
// some controller
['$scope', $anchorScroll, function($scope, $anchorScroll) {
    $scope.scrollTo = function(id) {
        $location.hash(id);
        $anchorScroll();
    }
}];

Если хеши везде используются только в случае якорей - можно повесить обработку на событие onLocationChangeSuccess.
$rootScope.$on('$routeChangeSuccess', function(newRoute, oldRoute) {
    if($location.hash()) $anchorScroll();  
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы