【问题标题】:How to use native anchor links with angularjs如何将原生锚链接与 angularjs 一起使用
【发布时间】:2013-11-21 20:42:06
【问题描述】:

我在一个相当大的平面文档页面上使用 angularjs。该页面有一些旨在使用传统 url 哈希链接的导航。网址如下所示:

/documentation/flat#26166276-basic-events

一旦导航发生并且我已经点击了下一页,这些网址就会被重写。角度初始化为: /documentation/flat#/26166276-basic-events

这会破坏导航。如果我已经在 /documentation/flat 路径上并点击其中一个哈希 URL,它似乎可以工作。它被重写,但浏览器仍然关注页面的正确部分。

但是,如果哈希 url 是从不同的路径触发的,则在 angularjs 重写发生时,浏览器将不会关注正确的 DOM 元素。

编辑:这是链接标记的样子

<a href="/documentation/flat#26166276-basic-events">Basic Events</a>

<h1 class="chap-header" id="26166276-basic-events">2.1.0 Basic Events</h1>

【问题讨论】:

  • 你的标记是什么样的?
  • @JustinNiessner 添加了标记示例
  • 您确定 URL 是在标签中重写的,而不是您正在导航到的页面(在导航发生后)?
  • 抱歉澄清一下,一旦导航发生,url就会被重写,它实际上会改变浏览器地址栏中的url
  • 那么你可能想删除它并提出问题“如何让 Angular 与其他哈希值配合得很好?”

标签: ruby-on-rails angularjs angularjs-routing


【解决方案1】:

这里进一步讨论了这个话题:

How to handle anchor hash linking in AngularJS

我使用了该线程的变体

if $location.$$url[0]== '#'
        $location.hash($location.$$url.replace('#', ''))
        $anchorScroll()

这基本上让我可以在任何锚链接前加上一个额外的#,并且 angularjs 将它们视为传统锚

【讨论】:

    【解决方案2】:

    有一个很傻的解决方法:在anchor id开头放一个/!

    <a id='/my-id' />
    

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多