【发布时间】:2013-01-20 15:45:45
【问题描述】:
你们中有人知道如何在 AngularJS 中很好地处理锚散列链接吗?
我有一个简单的常见问题页面的以下标记
<a href="#faq-1">Question 1</a>
<a href="#faq-2">Question 2</a>
<a href="#faq-3">Question 3</a>
<h3 id="faq-1">Question 1</h3>
<h3 id="faq-2">Question 2</h3>
<h3 id="fa1-3">Question 3</h3>
当单击上述任何链接时,AngularJS 会拦截并将我路由到一个完全不同的页面(在我的情况下,是 404 页面,因为没有与链接匹配的路由。)
我的第一个想法是创建一个匹配“/faq/:chapter”的路由,并在相应的控制器中检查匹配元素后的$routeParams.chapter,然后使用jQuery向下滚动到它。
但后来 AngularJS 又在我身上拉屎了,而且还是滚动到了页面的顶部。
那么,这里有人过去做过类似的事情并且知道一个好的解决方案吗?
编辑:切换到 html5Mode 应该可以解决我的问题,但无论如何我们都必须支持 IE8+,所以我担心这不是一个被接受的解决方案:/
【问题讨论】:
-
我认为 Angular 建议改用
ng-href=""。 -
我认为 ng-href 只有在 url 包含需要绑定到 ng-model 的动态数据时才适用。我有点想知道您是否将 hashPrefix 分配给 locationProvider,如果它会忽略链接到 ID:docs.angularjs.org/guide/dev_guide.services.$location
-
Adam 在 ng-href 用法上是正确的。
-
这也是新 Angular 的问题:stackoverflow.com/questions/36101756/…
标签: javascript angularjs anchor hashtag