Angular.js: Angular debería proporcionar una forma de desplazarse a un elemento específico en la página

Creado en 1 nov. 2010  ·  10Comentarios  ·  Fuente: angular/angular.js

Los identificadores de fragmentos (hash) se utilizan generalmente para vincular a lugares específicos en una página larga. Esto no funciona con angular ya que el hash se usa para implementar la ruta. Se debe proporcionar una forma de desplazarse hacia abajo en la página hasta un elemento específico.

feature

Todos 10 comentarios

Sí, y luego, deberíamos usarlo con $ location; como ahora, también admitimos hash, por lo que siempre que $ location.hash () cambie, deberíamos desplazarnos hasta él ...

Esto ya se implementó. Si $ location opera en modo html5, simplemente cree enlaces href="#anchor"

Perdón por golpearme con eso, pero ¿qué pasa si no estamos en modo html5? vea este violín de dos para referencias:
http://jsfiddle.net/gabrielstuff/SdGnR/ que usa el enrutador y rompe el enlace de anclaje.
y éste
http://jsfiddle.net/gabrielstuff/nYxFg/ que no utiliza ningún enrutador y permite correctamente saltar por la misma página.

Además, no intentarlo con HTML5 no ayudó mucho (pero este es otro boleto)

Tengo el mismo problema. No estoy en modo html5. ¿Cómo funcionaría esto en modo hashbang?

Estoy de acuerdo en que este comportamiento es muy inesperado. Incluso si alguien no está usando el modo HTML5, Angular no debería romper este comportamiento esperado al usar un hash con un ancla.

Según tengo entendido, Angular debería simplemente ignorar cualquier enlace con hash explícitos en ellos de todos modos. Si no estamos usando HTML5, el enlace <a href="/something"... se reescribirá automáticamente como /#/something (a menos que apunte a _self ). Entonces, <a href="#something" debería posiblemente ir siempre a /#something

+1

Creo que deberías usar anchorScroll para hacer eso.

Solo por curiosidad, @IgorMinar , ¿podríamos obtener un comentario sobre si este problema se solucionará o no? Se podría argumentar que no es necesario que los navegadores obsoletos no sean totalmente compatibles, pero creo que una respuesta clara sobre si los enlaces de anclaje deberían funcionar con navegadores que no admiten la API de historial.

Sin embargo, tengo el problema, si estoy en # / route1, entonces es difícil estar en # / route1 # anchor. El truco mencionado aquí (http://www.benlesh.com/2013/02/angular-js-scrolling-to-element-by-id.html) parece estar bien, pero sería ideal si esto "simplemente funcionó". De todos modos, si el truco $anchorScroll es la solución, entonces sería bueno decirlo y tal vez alguien pueda actualizar la documentación para reflejar cómo se debe resolver este problema para los navegadores más antiguos.

Aquí (http://stackoverflow.com/a/15935517/2071612) hay una solución brillante.

Por cierto, he enviado un PR (# 9596) para agregar soporte para el desplazamiento independientemente de $location.hash() .

¿Fue útil esta página
0 / 5 - 0 calificaciones