Angular.js: Angular должен обеспечивать возможность прокрутки к определенному элементу на странице.

Созданный на 1 нояб. 2010  ·  10Комментарии  ·  Источник: angular/angular.js

Идентификаторы фрагментов (хеш) обычно используются для ссылки на определенные места на длинной странице. Это не работает с angular, поскольку хеш используется для реализации маршрута. Должен быть предоставлен способ прокрутки страницы вниз до определенного элемента.

Все 10 Комментарий

Да, и тогда мы должны использовать его с $ location - поскольку сейчас мы также поддерживаем хеш, поэтому всякий раз, когда $ location.hash () изменяется, мы должны прокручивать до него ...

Это уже было реализовано. Если $ location работает в режиме html5, просто создайте href="#anchor" links

Извините, что наткнулся на это, но что, если мы не в режиме html5? см. эти две скрипки для ссылок:
http://jsfiddle.net/gabrielstuff/SdGnR/, которые используют маршрутизатор и нарушают привязку привязки.
и этот
http://jsfiddle.net/gabrielstuff/nYxFg/, который не использует какой-либо маршрутизатор и правильно позволяет переходить по той же странице.

Кроме того, отсутствие попыток с HTML5 не сильно помогло (но это другой билет)

У меня точно такая же проблема. Я не в режиме html5. Как это будет работать в режиме hashbang?

Согласен, такое поведение очень неожиданное. Даже если кто-то не использует режим HTML5, Angular не должен нарушать это ожидаемое поведение при использовании хэша с привязкой.

Насколько я понимаю, Angular в любом случае должен просто игнорировать любые ссылки с явными хэшами. Если мы не используем HTML5, ссылка <a href="/something"... будет автоматически переписана как /#/something (если я не нацелен на _self ). Таким образом, <a href="#something" вероятно, всегда должен идти к /#something

+1

Я думаю, для этого вам следует использовать anchorScroll .

Просто любопытно, @IgorMinar, можем ли мы получить комментарий о том, будет ли эта проблема исправлена? Кто-то может возразить, что это не обязательно на основании того, что устаревшие браузеры не полностью поддерживаются, но я думаю, что это четкий ответ о том, должны ли якорные ссылки работать с браузерами, которые не поддерживают API истории.

Но у меня проблема, если я нахожусь на # / route1, тогда трудно быть на якоре # / route1 #. Упомянутый здесь хак (http://www.benlesh.com/2013/02/angular-js-scrolling-to-element-by-id.html) кажется нормальным, но было бы идеально, если бы он «просто работал». В любом случае, если взлом $anchorScroll - это решение, было бы неплохо сказать это, и, возможно, кто-то может обновить документацию, чтобы отразить, как эта проблема должна быть решена для старых браузеров.

Здесь (http://stackoverflow.com/a/15935517/2071612) - блестящее решение.

Кстати, я отправил PR (# 9596) для добавления поддержки прокрутки независимо от $location.hash() .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги