2013-09-30 6 views
7

Mam widok ui wewnątrz mojej strony. Po kliknięciu niektórych przycisków widok ui zostaje załadowany i zastąpiony przez kod HTML. Chcę, aby strona przewinęła się do właśnie załadowanej części strony.jak przewinąć do załadowanego interfejsu ui-view

Czy to możliwe? Z góry dziękuję

+0

Myślę, że to jest to, czego szukasz - http://stackoverflow.com/questions/14712223/how-to-handle-anchor-hash-linking-in-angularjs/14717011 # 14717011 –

Odpowiedz

23

Moduł Ui-router został zaktualizowany, aby przewinąć domyślnie do widoku interfejsu użytkownika. Aby temu zapobiec, możesz dodać atrybut autoscroll="false" na <div ui-view>. Domyślne ustawienie to true, które przewija się do widoku ui po zmianie stanu.

Myślę, że powinno być na odwrót, gdzie trzeba ustawić autoprzewijanie, aby włączyć, a nie wyłączyć, ale jest to funkcjonalność zaktualizowanego ui-routera.

Możesz przeczytać o tym here.

w połączonej GitHub kwestii, to mówi, że wartość domyślna to autoscroll="expr" ale odkryłem, że nic nie robi i expr że wartość domyślna to autoscroll="true" (co ma większy sens).

+0

Dzięki za napisanie tego. Ta nowa aktualizacja doprowadza mnie do szaleństwa, ponieważ wszystkie moje strony nagle załadowały się w dół i nie mogłem zrozumieć dlaczego. Dziękuję Ci! – ac360

2

Po zmianie trasy przewinie do góry strony.

$scope.$on('$routeChangeSuccess', function() { 
     window.scrollTo(0, 0); 
    }); 

włóż ten kod do sterownika. (Zmień wartość zgodnie z wymaganiami)

+1

Musiałem użyć '$ stateChangeSuccess', ale działało to dobrze. Użyto również usługi '$ window' dla testowalności – Chic