ホームページ > ウェブフロントエンド > jsチュートリアル > AngularJS アプリケーションでスムーズなアンカー ハッシュ リンクを実装するにはどうすればよいですか?

AngularJS アプリケーションでスムーズなアンカー ハッシュ リンクを実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-29 07:31:02
オリジナル
981 人が閲覧しました

How can I implement smooth anchor hash linking in AngularJS applications?

AngularJS でのアンカー ハッシュ リンクの処理

AngularJS でのアンカー ハッシュ リンクの問題に直面している場合、利用可能な簡単な解決策があります。 $ anchorScroll().

AngularJS は、$anchorScroll() サービスを提供します。これにより、$location.hash() で見つかった ID を持つ任意の要素に簡単にスクロールできます。使用方法は次のとおりです:

<code class="javascript">app.controller('TestCtrl', function($scope, $location, $anchorScroll) {
   $scope.scrollTo = function(id) {
      $location.hash(id);
      $anchorScroll();
   }
});</code>
ログイン後にコピー

マークアップで、ng-click ディレクティブを使用してスクロール アクションをトリガーできます:

<code class="html"><a ng-click="scrollTo('foo')">Foo</a>

<div id="foo">Here you are</div></code>
ログイン後にコピー

AngularJS との統合ルーティング

AngularJS ルーティングで $anchorScroll() を使用するには、次の手順に従います:

  1. 通常どおりにルーティングを構成します
  2. 次のコードを追加します。
<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>
ログイン後にコピー

ルーティングを含むリンクの例を次に示します。

<code class="html"><a href="#/test?scrollTo=foo">Test/Foo</a></code>
ログイン後にコピー

さらに単純なアプローチとして、次のようにします。このコードを使用します:

<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>
ログイン後にコピー

および対応するリンク:

<code class="html"><a href="#/test#foo">Test/Foo</a></code>
ログイン後にコピー

これらのソリューションを使用すると、アンカーにシームレスにリンクし、AngularJS アプリケーション内の対応するコンテンツにスクロールできます。

以上がAngularJS アプリケーションでスムーズなアンカー ハッシュ リンクを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート