Używam kątowa na scrollTo
i anchorScroll
tak:Jak zatrzymać kątowa przeładować gdy adres zmienia
app.controller('TestCtrl', function($scope, $location, $anchorScroll) {
$scope.scrollTo = function(id) {
$location.hash(id);
$anchorScroll();
}
});
<a ng-click="scrollTo('foo')">Foo</a>
<div id="foo">Here you are</div>
Moim problemem jest to, że po kliknięciu w link przewija stronę w dół, ale w 50% przypadków strona przeładowuje się, ponieważ zmiany hash w adresie URL.
Jak mogę zapobiec przeładowaniu strony przez Angular?
Aktualizacja: I odkryli, że tutaj
https://groups.google.com/forum/?fromgroups=#!msg/angular/BY2ekZLbnIM/MORF-z2vHnIJ
że
The $location service broadcasts a $locationChangeStart event. You can observe that and call event.preventDefault() to stop the navigation. Nice!
może ktoś powiedzieć jak obserwować to wydarzenie i zapobiec Wartość domyślna
Włożyłem że funkcja scrollTo i to działa, ale problemem jest to mój drugi click po lewej stronie menu po stronie przestaje działać, ponieważ jest to również chnidowanie skrótu. jak mogę temu zapobiec tylko wtedy, gdy kliknie się na konkretne linki tylko – user1865341
Nie jestem pewien, czy potrafisz. Prawdopodobnie będziesz musiał również zarządzać tymi linkami za pomocą '$ anchorScroll()' lub ponownie przemyśleć swój projekt. Nawiasem mówiąc, ten fragment trafia do funkcji kontrolera nie w funkcji 'scrollTo'. – cezar