【问题标题】:AngularJS 1.1.5 - automatically adding hash tag to URLsAngularJS 1.1.5 - 自动将哈希标签添加到 URL
【发布时间】:2013-06-25 09:11:49
【问题描述】:

有谁知道为什么 1.1.5 版会自动在您的网址中添加主题标签,以及如何关闭它? IMO,这看起来很难看。只要您有一个不以正斜杠结尾的网址,就会发生这种情况。 (我没有使用路线或类似的东西)。

所以这个:

http://my.website.com/about

变成

http://my.website.com/about#/about

还有这个:

http://my.website.com/about.html

变成:

http://my.website.com/about.html#/about.html

但是这个:

http://my.website.com/about/

没有这个问题。

【问题讨论】:

  • 你是如何设置位置的?看起来好像您正在使用 $location.path('about.html');
  • @moderndegree 我没有使用任何类型的路线。我没有使用 $locaton。它不是一个应用程序,只是标准网页中的角度控制器。路径是使用实际锚点和整页加载设置的。
  • 我也看到了这个问题:我的代码都没有设置 $location (我在任何地方都有断点并且它们没有命中),并且角度 1.1.4 不会出现问题,所以这似乎是框架正在做的事情

标签: javascript url angularjs hashtag


【解决方案1】:

前几天我遇到了这个问题。我通过为$locationProvider 启用 HTML5 模式解决了这个问题。请参阅 Docs for $location - HTML5 Mode Updated link for $location - HTML5 Mode

它应该看起来像这样:

.config(['$locationProvider', function($locationProvider){
    $locationProvider.html5Mode(true).hashPrefix('!');
}]);

【讨论】:

  • 你救了我的命。他们要抓住我的大拇指!
  • 哈哈。好吧,我很高兴你可以再保留一天的拇指。使按空格键更容易。尽管如此,我的左拇指在打字时几乎没用。因此,如果他们将来需要,让他们接受吧:)
  • 这确实引入了一个新问题,那就是去另一个页面的常规锚点变成了历史推送链接,页面无处可去。然而,这可以通过使您的链接target="_self" 来解决。做类似$('[href]').attr('target', '_self') 的事情可以解决这个问题。如果您可以在答案中添加一些关于此的内容,我将成为您最好的朋友。
  • 这很奇怪。切换到 HTML5 模式并没有给我带来这个问题。我的链接仍然有效。如果没有看到更多代码,我不确定会有什么区别。也许这与在您的 <head> 中设置 base_url 有关?
  • @abden003 我进行了谷歌搜索并为您更新了文档链接
【解决方案2】:

这似乎是 angularjs 1.1.5 中引入的一个错误(因为 1.1.4 没有出现这个问题)。我在这里报告了这个错误:

https://github.com/angular/angular.js/issues/3083

【讨论】:

    【解决方案3】:

    在 $routeProvider 中设置 HTML5 模式为 true 如下

    $locationProvider.html5Mode(true);
    

    并在页面的头部添加以下行

    <base href="/">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      相关资源
      最近更新 更多