Для веб-приложения AngularJS веб-страницы не запоминают свои последние позиции прокрутки при навигации к ним с помощью кнопки "Назад". Зачем? Как исправить?

При навигации по руководству разработчика для AngularJS я заметил, что я не возвращаюсь в свою последнюю позицию прокрутки при переходе на страницу с помощью кнопки "Назад". Вместо этого я возвращаюсь к вершине. Поскольку руководство разработчика построено с помощью AngularJS, я боюсь, что, когда я создам собственное веб-приложение с помощью AngularJS, оно будет раздражать моих пользователей, если у них будет такой же опыт. Почему это происходит, и как это можно исправить? Мне нужно каким-то образом использовать API истории HTML5?

Перейдите в руководство разработчика и посмотрите это поведение самостоятельно: http://docs.angularjs.org/guide/directive

Ответ 1

Если вы хотите исправить это, я могу подумать о том, чтобы отслеживать каждую позицию прокрутки маршрута на карте (в сервисе или на rootScope) - когда вы покидаете страницу ($routeChangeStart прослушиватель) только сохраните положение прокрутки вместе с маршрутом маршрута.

И при переходе на любую страницу вы можете проверить, существует ли запись на карте маршрута и прокрутить окно в нужную позицию на $routeChangeSuccess event

Ответ 2

Вы должны заглянуть в службу Angular $anchorScroll.

http://docs.angularjs.org/api/ng. $anchorScroll

Это именно ваш сценарий! Пример кода в значительной степени говорит сам за себя.