Мне хорошо известно, что манипуляция DOM принадлежит директивам, а не контроллерам, но я зависаю, будет ли просто прокрутка к элементу (с scrollTop
jQuery) считаться манипуляцией DOM и/или должна быть перенесена в директиву.AngularJS - Прокрутка элемента зависит от директивы?
Моя страница динамически генерируется (с использованием Grails) и небольшой начальной загрузки выпадающий помещается на углу страницы, чтобы облегчить прокрутку к местам внутри длинного документа:
<a ng-click="scrollTo('question${ subQuestion.id}')">
${}
заменяется с номером при отправке клиенту.
Моя scrollTo
функции в моем контроллере достаточно проста и работает:
$scope.scrollTo = function(id) {
$('html, body').animate({
scrollTop: $('#' + id).offset().top - 50
}, 1000);
};
Я использую UI-маршрутизатор и ранее с помощью $uiViewScroll
для перехода к элементу; это выглядело скорее в соответствии с углом , но мне нужно смещение 50px из-за навигационной панели, и я предпочитаю анимацию (оба они не выглядят как опция с $uiViewScroll
).
Моих вопросы:
- ли прокрутка элемента имеет дайджест последствие, как истинные манипуляции DOM?
- Прокрутка элемента за пределами директивы плохая практика? Если да, то почему?
'$ anchorScoll' имеет опцию смещения, а' $ uiViewScroll' может быть настроен на использование '$ anchorScoll' – charlietfl