2015-04-20 11 views
6

Sto usando AngularJS (stack MEAN.io) e sto ricevendo un fastidioso problema tecnico relativo allo scorrimento.Scorrere sempre in alto in AngularJS

Quando l'utente fa clic su un collegamento, la pagina di destinazione assume la stessa posizione di scorrimento della pagina di origine, invece di rimanere in cima.

Per fissare questo comportamento strano, ho usato la prossima:

$rootScope.$on("$viewContentLoaded", function() { 
    $anchorScroll(); 
}); 

Ma questo codice rende ogni singola pagina prende il rotolo in posizione superiore, che è fastidioso anche perché l'utente deve essere in grado di tornare indietro e recuperare la posizione di scorrimento precedente.

Qualche suggerimento? Come posso ottenere il risultato desiderato?

Grazie!

Modifica --------------------

Quando ho provato ad utilizzare la soluzione di scorrimento automatico ng-view +, non funziona per io e io non sappiamo perché.

Questo è il modo in cui lo sto usando, nella mia pagina default.html che è servita dal server:

<body ng-cloak class="ng-cloak" ng-class="{state: true, auth: authPage}" ng-controller="BodyController"> 

     <div ng-include="'/system/views/header.html'"></div> 

    <section class="content"> 
     <div data-ng-include="'/ceh-admin/views/adminShortcuts.html'"></div> 
     <div ng-view autoscroll="true">{% block content %}{% endblock %}</div> 
    </section> 

    <div data-ng-include="'/system/views/footer.html'"></div> 

    {% include '../includes/foot.html' %} 

    </body> 

Qualcosa di strano nel mio codice HTML?

risposta

0

Come da ngView documentation è necessario dichiarare come si desidera gestire lo scorrimento.

autoscroll (opzionale) stringa Sia ngView dovrebbe chiamare $ anchorScroll per far scorrere la finestra, dopo la vista viene aggiornata.

  • Se l'attributo non è impostato, disabilitare lo scorrimento.
  • Se l'attributo è impostato senza valore, abilitare lo scorrimento.
  • In caso contrario, abilitare lo scorrimento solo se il valore dell'attributo autoscroll valutato come espressione restituisce un valore di verità.

Si è disabilitata di default quindi sarà necessario aggiungere quanto segue al markup:

<div ng-view autoscroll></div> 

o (come per la documentazione e la seconda delle preferenze):

<div ng-view autoscroll="true"></div> 
+0

Sembra che non funziona per me. Ho modificato l'argomento principale che mostra come lo sto usando. Vedi qualcosa di strano? –

+0

Hai errori nella console? Se aggiungi/rimuovi lo scorrimento automatico qui (http: // jsfiddle.net/dL76co2r /) puoi vedere come dovrebbe funzionare? Il tuo markup non sembra problematico. – RichieAHB

0

Non sono il migliore con angular js, ma ho avuto un problema simile e l'ho risolto usando il seguente codice:

<div data-ng-view data-autoscroll="true"></div> 

si può dare un'occhiata alla documentazione qui: angular doc

Spero che sia aiuta

+0

Sì, grazie per l'aiuto, ma per il momento quella soluzione non funziona neanche per me. Argomento principale modificato che mostra come sto usando lo scorrimento automatico. –

+0

@ RubénJiménez quale versio di Angular stai usando? qualsiasi errore della console? – gon250

Problemi correlati