Wie zu stoppen Winkel, um neu zu laden wenn sich die Adresse ändert
Bin ich mit dem Eckigen ' s scrollTo
und anchorScroll
wie diese:
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>
Mein problem ist, dass wenn ich auf den link klicken, die Seite scrollt, aber in 50% der Fälle die Seite neu geladen, weil die hash-änderungen in der URL.
Wie kann ich verhindern, dass Winkel aus die Seite neu zu laden?
Update:
Ich habe festgestellt, dass hier
https://groups.google.com/forum/?fromgroups=#!msg/eckig/BY2ekZLbnIM/MORF-z2vHnIJ
dass
The $location service broadcasts a $locationChangeStart event. You can observe that and call event.preventDefault() to stop the navigation. Nice!
kann mir jemand sagen, wie man beobachten, dass die Veranstaltung und verhindern, dass Standard -
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem refresh ist da, weil es ist ein Aufruf an die locationChangeStart Veranstaltung. Sie können dies stoppen, indem Sie tun:
Ich eigentlich am Ende schreiben meiner eigenen scrollTo-Richtlinie verwendet diese-Aufruf drin.
Plnkr /Github
Meine anderen post über diesem hier
Können Sie hinzufügen, $event-parameter auf ng-click-handler:
und in scrollTo-Funktion können Sie den nächsten:
Aber das bedeutet, dass Sie sollten analysieren Anker hash aus einem "a" - element manuell.
Ich denke, dies kann helfen, u
aus: https://stackoverflow.com/a/25930875/4138368
Ereignis emittiert wird, auf die rootScope, so können Sie sich registrieren Beobachter mit der
$on
Methode.$anchorScroll()
als gut oder überdenken Sie Ihre design. Durch die Möglichkeit, das snippet geht in den controller-Funktion nicht in IhremscrollTo
Funktion.Um zu verhindern, dass die Seite Neuladen in eine eckige Anker, fügen Sie ein leeres Attribut href.
doc : https://docs.angularjs.org/api/ng/directive/ngHref