10

我有一个 angularJS 应用程序,配置如下:

$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');

因此,在现代浏览器中,它可以与 pushstate 一起使用,示例 URL 将是:

http://myapp.com/members

在较旧的浏览器(例如 IE9)中,当我浏览到该 URL 时,它会按预期将其重写为:

http://myapp.com/members#!/members

从此时开始单击任何链接使用 hashbang 方法,也是正确的:

http://myapp.com/members#!/members/add

然而...

如果我在一个hashbang重写的url上完全重新加载一个页面,它会继续将hash附加到它自己。第一次刷新:

http://myapp.com/members#!/members#!/members#!%2Fmembers

..和第二次刷新:

http://myapp.com/members#!/members#!/members#!%2Fmembers#!/members#!%2Fmembers%23!%2Fmembers%23!%2Fmembers

这里发生了什么可能导致这种情况?通常它不会发生,因为人们会在应用程序中导航并且 angular 会处理 url,但是完全重新加载似乎会破坏它。谢谢。

4

2 回答 2

6

尝试设置

<base href="/" /> 

在头上?它可能是一个有角度的 1.1.5 错误/功能。

于 2013-05-30T19:33:55.597 回答
1

<base>在您的标签中放置标签<head>似乎是要走的路...

<head>
    <base href="/">
</head>

...但可能还有更多工作要做。我也设置了我$locationProvider的,html5Mode当我加载我的页面时出现错误。

myAngularModule.config($locationProvider =>
{
    $locationProvider.html5Mode({
        enabled: true,
        requireBase: false,
        rewriteLinks: false
    });
});

我还必须为 html5Mode配置我的服务器

于 2016-01-15T16:32:04.437 回答