2014-07-05 12 views
8

Sto tentando di utilizzare AngularJS $anchorScroll con $location.hash. Tuttavia, quando imposto l'hash, AngularJS aggiunge una barra in avanti,/dopo di essa.AngularJS sta proponendo barra/dopo tag hash

Ad esempio, l'url è: http://localhost:13060/Dashboard. Quando non includo la libreria AngularJS, posso fare clic sul collegamento, #contact, e andare su http://localhost:13060/Dashboard#contact.

Ma quando includo AngularJS e faccio clic sul collegamento, si passa a http://localhost:13060/Dashboard#/contact impedendo il funzionamento di $ anchorScroll.

Modifica $ anchorScroll non funziona

L'URL di partenza è http://localhost:13060/Category. Quando aggiungo una categoria, dovrebbe andare a http://localhost:13060/Category#/#id (dove id è il nuovo id) e scorrere la pagina verso il basso. L'URL si sta aggiornando correttamente ma $ anchorScroll non sta scorrendo.

//jump to new category 
$location.path(""); 
$location.hash(cat.ID); 
$anchorScroll(); 

risposta

5

A meno che non si utilizza html5mode, che rimuove l'hash dal percorso angolare, avrai 2 hash, una per il routing angolare e altro per ancoraggi.

http://localhost:13060/Dashboard#/#contact

Supponendo che aveva un percorso percorso impostato come /profiles e l'ancora era in quella vista l'url sarà simile:

http://localhost:13060/Dashboard#/profiles#contact

+0

ho l'URL correttamente formattato, ma $ anchorScroll () non sta scorrendo verso il basso fino alla pagina. –

+0

Sarò onesto, non ho mai usato anchorscroll. '$ Location.hash()' restituisce ciò che ci si aspetterebbe (il secondo hash)? – charlietfl

+0

Sì, aggiorna correttamente l'hash (quando si specifica il percorso), ma non succede nulla oltre alla barra del browser URL che riflette la modifica. –