Angular.js: Angularは、ページ上の特定の要素にスクロールする方法を提供する必要があります

作成日 2010年11月01日  ·  10コメント  ·  ソース: angular/angular.js

フラグメント識別子(ハッシュ)は通常、長いページの特定の場所にリンクするために使用されます。 ハッシュがルートの実装に使用されているため、これはAngularでは機能しません。 特定の要素までページを下にスクロールする方法を提供する必要があります。

feature

全てのコメント10件

そうです、それなら$ locationで使用する必要があります-今のところ、ハッシュもサポートしているので、$ location.hash()が変更されるたびに、それにスクロールする必要があります...

これはすでに実装されています。 $ locationがhtml5モードで動作する場合は、 href="#anchor"リンクを作成するだけです

申し訳ありませんが、html5モードでない場合はどうなりますか? 参考のためにこの2つのファイルを参照してください:
http://jsfiddle.net/gabrielstuff/SdGnR/ルーターを使用し、アンカーリンクを切断します。
そしてこれ
http://jsfiddle.net/gabrielstuff/nYxFg/ルーターを使用しておらず、同じページに正しくジャンプできるようになっています。

また、HTML5を試してみてもあまり役に立ちませんでした(ただし、これは別のチケットです)

私は同じ問題を抱えています。 私はhtml5モードではありません。 これはハッシュバンモードでどのように機能しますか?

私はこの振る舞いが非常に予想外であることに同意します。 誰かがHTML5モードを使用していない場合でも、アンカー付きのハッシュを使用する場合、Angularはこの予想される動作を壊してはなりません。

私が理解しているように、Angularは、とにかく明示的なハッシュが含まれているリンクを単に無視する必要があります。 HTML5を使用していない場合、リンク<a href="/something"...は自動的に/#/somethingとして書き換えられます( _selfをターゲットにしない限り)。 したがって、 <a href="#something"は間違いなく常に/#something移動する必要があります

+1

そのためにはanchorScrollを使用する必要があると思います。

好奇心旺盛な@IgorMinarで、この問題が修正されるかどうかについてコメントを

問題が発生しますが、#/ route1にいる場合は、#/ route1#anchorにいるのは困難です。 ここで言及されているハック(http://www.benlesh.com/2013/02/angular-js-scrolling-to-element-by-id.html)は問題ないようですが、これが「うまくいった」場合は理想的です。 とにかく、 $anchorScrollハックが解決策である場合は、それを言うのが良いかもしれません。おそらく誰かがドキュメントを更新して、古いブラウザでこの問題を解決する方法を反映することができます。

ここ(http://stackoverflow.com/a/15935517/2071612)は素晴らしいソリューションです。

ところで、私は$location.hash()独立してスクロールのサポートを追加するためのPR(#9596)を提出しました。

このページは役に立ちましたか?
0 / 5 - 0 評価