Angular.js: Angular deve fornecer uma maneira de rolar para um elemento específico na página

Criado em 1 nov. 2010  ·  10Comentários  ·  Fonte: angular/angular.js

Os identificadores de fragmento (hash) geralmente são usados ​​para vincular a locais específicos em uma página longa. Isso não funciona com o angular, pois o hash está sendo usado para implementar a rota. Deve ser fornecida uma maneira de rolar para baixo na página até um elemento específico.

feature

Todos 10 comentários

Sim, e então, devemos usá-lo com $ location - como agora, também suportamos hash, então sempre que $ location.hash () mudar, devemos rolar até ele ...

Isso já foi implementado. Se $ location operar em modo html5, basta criar links href="#anchor"

Desculpe bater nisso, mas e se não estivermos no modo html5? veja este dois fidle para referências:
http://jsfiddle.net/gabrielstuff/SdGnR/ que usa o roteador e quebra o link de âncora.
e este
http://jsfiddle.net/gabrielstuff/nYxFg/ que não está usando nenhum roteador e permite pular corretamente na mesma página.

Também não tentar com HTML5 não ajudou muito (mas este é um outro tíquete)

Eu tenho o mesmo problema. Não estou no modo html5. Como isso funcionaria no modo hashbang?

Eu concordo que esse comportamento é muito inesperado. Mesmo se alguém não estiver usando o modo HTML5, o Angular não deve quebrar esse comportamento esperado ao usar um hash com uma âncora.

Pelo que entendi, o Angular deveria simplesmente ignorar quaisquer links com hashes explícitos neles de qualquer maneira. Se não estivermos usando HTML5, o link <a href="/something"... será automaticamente reescrito como /#/something (a menos que eu tenha como alvo _self ). Portanto, <a href="#something" deve indiscutivelmente sempre ir para /#something

+1

Acho que você deve usar anchorScroll para fazer isso.

Apenas por curiosidade, @IgorMinar, podemos comentar se esse problema será corrigido ou não? Alguém poderia argumentar que não precisa ser baseado em navegadores desatualizados não sendo totalmente suportados, mas eu acho que uma resposta clara sobre se os links âncora devem ou não funcionar com navegadores que não oferecem suporte à API de histórico.

Eu entendo o problema, se estou em # / route1, é difícil estar em # / route1 # anchor. O hack mencionado aqui (http://www.benlesh.com/2013/02/angular-js-scrolling-to-element-by-id.html) parece ok, mas seria ideal se "simplesmente funcionasse". De qualquer forma, se o hack $anchorScroll for a solução, então pode ser bom dizer isso e talvez alguém possa atualizar a documentação para refletir como esse problema deve ser resolvido para navegadores mais antigos.

Aqui (http://stackoverflow.com/a/15935517/2071612) está uma solução brilhante.

BTW, enviei um PR (# 9596) para adicionar suporte para rolagem independentemente de $location.hash() .

Esta página foi útil?
0 / 5 - 0 avaliações