Das Navigieren durch Webseiten mithilfe von Ankern ist eine gängige Praxis, insbesondere bei langen Seiten mit mehreren Abschnitten. In AngularJS-Anwendungen kann die Handhabung von Ankerlinks jedoch problematisch sein.
Beim Klicken auf Ankerlinks in AngularJS besteht das Standardverhalten darin, den Klick abzufangen und den Benutzer auf eine andere Seite umzuleiten. Um dieses Problem anzugehen, bietet AngularJS eine Lösung.
Der $anchorScroll()-Dienst in AngularJS wurde speziell für die Verarbeitung von Anker-Hash-Verknüpfungen entwickelt. Mit diesem Dienst können Sie basierend auf dem Hash-Wert in der URL zu einem Element auf der aktuellen Seite scrollen.
Um $anchorScroll() zu verwenden, fügen Sie es einfach in Ihren Controller ein und rufen Sie es bei Bedarf auf. Der Dienst akzeptiert einen optionalen ID-Parameter, der das Element angibt, zu dem gescrollt werden soll. Wenn keine ID angegeben wird, wird zu dem Element gescrollt, dessen ID mit $location.hash() übereinstimmt.
<code class="javascript">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></code>
In AngularJS-Routinganwendungen Die Verwendung von $anchorScroll() erfordert einen etwas anderen Ansatz. Standardmäßig scrollt AngularJS zum Seitenanfang, wenn sich die Route ändert. Um dies zu verhindern und das Scrollen von Ankerlinks zu ermöglichen, können Sie den folgenden Code hinzufügen:
<code class="javascript">app.run(function($rootScope, $location, $anchorScroll, $routeParams) { //when the route is changed scroll to the proper element. $rootScope.$on('$routeChangeSuccess', function(newRoute, oldRoute) { $location.hash($routeParams.scrollTo); $anchorScroll(); }); });</code>
Ihr Ankerlink würde dann so aussehen:
<code class="html"><a href="#/test?scrollTo=foo">Test/Foo</a></code>
Für einen noch einfacheren Ansatz können Sie diesen modifizierten Code verwenden:
<code class="javascript">app.run(function($rootScope, $location, $anchorScroll) { //when the route is changed scroll to the proper element. $rootScope.$on('$routeChangeSuccess', function(newRoute, oldRoute) { if($location.hash()) $anchorScroll(); }); });</code>
Ihr Ankerlink würde dann so aussehen:
<code class="html"><a href="#/test#foo">Test/Foo</a></code>
Durch die Nutzung dieser Techniken können Sie reibungslos damit umgehen Verankern Sie Hash-Links in Ihren AngularJS-Anwendungen und bieten Sie so eine nahtlose Benutzererfahrung beim Navigieren auf langen Seiten mit mehreren Abschnitten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit der Anker-Hash-Verknüpfung in AngularJS-Anwendungen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!