Ho finalmente ottenuto ciò di cui avevo bisogno.
Avevo bisogno di scorrere verso l'alto, ma volevo che alcune transizioni non lo facessero
Puoi controllarlo a livello di itinerario.
Sto combinando la soluzione sopra di @wkonkel e aggiungendo un semplice noScroll: true
parametro ad alcune dichiarazioni di rotta. Poi lo vedo nella transizione.
Tutto sommato: questo galleggia all'inizio della pagina su nuove transizioni, non galleggia all'inizio Forward
/ Back
transizioni e ti consente di ignorare questo comportamento, se necessario.
Il codice: (soluzione precedente più un'opzione extra noScroll)
// hack to scroll to top when navigating to new URLS but not back/forward
let wrap = function(method) {
let orig = $window.window.history[method];
$window.window.history[method] = function() {
let retval = orig.apply(this, Array.prototype.slice.call(arguments));
if($state.current && $state.current.noScroll) {
return retval;
}
$anchorScroll();
return retval;
};
};
wrap('pushState');
wrap('replaceState');
Mettilo nel tuo app.run
blocco e iniettalo $state
...myApp.run(function($state){...})
Quindi, se non desideri scorrere fino all'inizio della pagina, crea un percorso come questo:
.state('someState', {
parent: 'someParent',
url: 'someUrl',
noScroll : true // Notice this parameter here!
})