AngularJS中的相对链接

AngularJS中的相对链接,angularjs,Angularjs,在我的模板中,我想使用相对路线。目前我的锚href中有绝对路径,这是次优的 <a href="/#/dashboard/settings">Settings</a> 如何将其重写为相对导航(在此相对仪表板中) 它应该可以与hashbang和html5历史api路由(AngularJS使用或退回到哪个路由)一起使用。我认为您不能将其重写为使用相对导航。如果您想链接到/user/profile,但您的用户在/dashboard/settings上,relative将如何

在我的模板中,我想使用相对路线。目前我的锚
href
中有绝对路径,这是次优的

<a href="/#/dashboard/settings">Settings</a>

如何将其重写为相对导航(在此相对
仪表板中)


它应该可以与hashbang和html5历史api路由(AngularJS使用或退回到哪个路由)一起使用。

我认为您不能将其重写为使用相对导航。如果您想链接到
/user/profile
,但您的用户在
/dashboard/settings
上,relative将如何工作。如果主导航链接到的只是
profile
(相对),它将转到
/dashboard/profile
,我假设这不是您想要的


为什么相对路径在应用程序中如此重要?除了节省击键之外还有什么吗?

在控制器中,您可以查看
$routeParams
并构建一个基本url进行操作

从那里,您的模板可以针对
“{{baseUrl}}/relative/to/scope/baseUrl”

在代码中构建的URL可以转到
$scope.baseUrl+/relative/to/scope/baseUrl”;


它不完全是“相对的”,但它确实解决了允许URL细化其他URL的问题,而不必硬编码层次结构,也不必担心路由图是变量之类的。

我不确定您的角度版本,但在我的1.2.18中,当您设置

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

编辑:请参阅MDN文档以了解
标记。

旧问题,但我发现这是可行的:

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

如果HTML5路由可用(或反之亦然),是否至少有一种方法告诉angular自动将
/#/
前缀替换为
/
:我已经在使用它了,但它并没有替代哈希,只是将其转义为
/#%2fsdashboard%2Fsettings
。也许你配置错误了?这里有一个简单的例子:在Chrome中,你会看到漂亮的URL,在IE9中,你会看到hashbang。
$locationProvider.html5Mode(true);
$locationProvider.html5Mode({
    enabled: true,
    requireBase: false,
    rewriteLinks: false
});