2016-07-30 27 views
0

Ich entwickle in Angular mit einem Knoten-Paket für reibungslose Scrolling. Ich habe eine Navigationsleiste auf allen meinen Seiten (als Richtlinie) und wenn jemand in meinem Verlaufsstatus /history ist und auf einen Link in der Navigationsleiste klickt, um zu einem bestimmten Abschnitt auf der Homepage / zu gelangen, möchte ich, dass die Site Zustände in die Status der Startseite und dann automatisch zu dem Abschnitt zu scrollen, auf den der Benutzer in der Navigationsleiste geklickt hat.Glatter Bildlauf zu einem Element nach Umschalten des Winkels

Im Moment bin ich tun

scope.goToSection = function (val, state) { 
     $state.go(state) 
     setTimeout(function() {smoothScroll(document.querySelector(val))}, 100); 
    } 

was funktioniert, aber ich bin nicht sicher, ob dies die natürlichste Art und Weise ist es, diese Funktionalität zu erhalten.

Ich versuchte $state.go(state).then(smoothScroll(document.querySelector(val)));, aber die Seite würde nach Schaltzuständen nicht scrollen. Gibt es einen besseren oder natürlicheren Weg, diese Funktionalität zu erhalten?

Antwort

0

Das Problem mit benutzerdefinierten Funktionen verwendeten Zustände wechseln statt ui-Sref ist, dass man zum Beispiel verliert die posibility mit dem Mausrad in den neuen Registerkarte usw.

Lösung dieses Problem wäre zu öffnen, klicken Überprüfen Sie das $ stateChangeSuccess-Ereignis und scrollen Sie basierend auf den Daten, die an den neuen Status übergeben wurden.

$rootScope.$on('$stateChangeSuccess', function(e, toState, toParams) { 
     // do the scrolling 

    });