Плавная прокрутка к элементу после переключения состояния в угловой

0

Я разрабатываю в Angular, используя пакет узлов для плавной прокрутки. У меня есть навигационная панель на всех моих страницах (в качестве директивы), и если кто-то находится в моем состоянии истории /history и нажимает на ссылку в навигационной панели, чтобы перейти к определенному разделу на главной странице /, я хочу, чтобы сайт переключил состояния на состояние главной страницы, а затем автоматически прокручивается в раздел, который пользователь нажал на панели навигации.

Прямо сейчас я делаю

    scope.goToSection = function (val, state) {
        $state.go(state)
        setTimeout(function() {smoothScroll(document.querySelector(val))}, 100);
    }

который работает, но я не уверен, что это самый естественный способ получить эту функциональность.

Я попробовал $state.go(state).then(smoothScroll(document.querySelector(val))); но страница не будет прокручиваться после переключения состояний. Есть ли лучший или более естественный способ получить эту функциональность?

Теги:
state
smooth-scrolling

1 ответ

0

Проблема с пользовательскими функциями, используемыми для переключения состояний вместо ui-sref, заключается в том, что вы теряете, например, возможность щелкнуть мышью, чтобы открыть на новой вкладке и т.д.

Решением этого будет проверка события $ stateChangeSuccess и прокрутка на основе данных, переданных в новое состояние.

    $rootScope.$on('$stateChangeSuccess', function(e, toState, toParams) {
        // do the scrolling

    });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню