Angularjs 默认情况下,将angular ui路由器配置为使用绝对URL

Angularjs 默认情况下,将angular ui路由器配置为使用绝对URL,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我的带有ui路由器的angular应用程序正在/content/page.html的页面内运行。该页面还有一个 <base href="/somewhere"> 在头上贴标签 由于基本标记,我最终得到了指向/somewhere#/section1的错误URL,而不是/content/page.html#/section1 我无法删除此基本标记,因为我只是大型站点的一小部分。有没有办法让ui路由器在默认情况下生成绝对URL?我注意到,ui sref opts=“{absolut

我的带有ui路由器的angular应用程序正在
/content/page.html
的页面内运行。该页面还有一个

<base href="/somewhere"> 

在头上贴标签

由于基本标记,我最终得到了指向
/somewhere#/section1
的错误URL,而不是
/content/page.html#/section1

我无法删除此基本标记,因为我只是大型站点的一小部分。有没有办法让ui路由器在默认情况下生成绝对URL?我注意到,
ui sref opts=“{absolute:true}”
可以做到这一点,但它使用base标记生成链接。有没有办法让ui路由器始终使用window.location.pathname创建绝对URL

编辑:我已经创建了一个演示问题的示例


关于这一点,Markus

您可以尝试将
替换为
,并在app.js中的配置路径中添加带有url的链接

html:

PS:我用另一个base href在我的应用程序上尝试了这一点,它很有效,因此您可以在不更改base url标记的情况下进行尝试

html:


我希望这会对你有所帮助。

我希望这个答案比我以前的答案更能帮助你。我测试了你的plunker,现在默认路线正常了。我希望这就是你要找的


通过使用角度装饰器并覆盖$urlRouter'href'函数的行为解决了此问题。

Thx。用户似乎不可能右键单击链接并在新选项卡中打开它,不是吗?angular应用程序和ui路由器在“/某处”不可用。我还没有试过。嗨,你有没有在你的索引中添加依赖性来在你的app.js中使用ui路由器?右键单击是必需的吗?对我来说,我使用模态引导在新窗口中打开我的视图。但我不知道这是否符合您的期望。应用程序使用什么技术?要打开新选项卡,请查看此链接:。我想你可以使用bootstrop查看弹出菜单。我只是想确保该网站具有正常的网站行为。这意味着链接可以在新的选项卡中打开,并且可以添加书签。我创建了一个plunker来演示这个问题(见上文)。我认为你提到的解决方案解决不了这个问题。谢谢你的帮助!不过,这篇文章中的链接仍然指向。使用Chrome进行测试。是的,我更改了路由以验证重定向是否有效。那么,你的问题解决了吗?为什么链接是错误的?您的路线包含某个地方,但您可以重定向到/content/page.html中的html页面,否则我真的不理解您的问题。在这种情况下,你能更清楚地解释你的问题吗?链接指向。这是错误的。应该是的。还有为什么你不能换衣服。因为,我试过了,当href等于“/”时,链接很好()@Markus请提供一个例子。
<base href='/'>
<a ui-sref="nameOfTheRoute">Link</a>
$stateProvider.state('nameOfTheRoute',{url:'/', templateUrl:'Content/page.html'})
<base href='/somewhere'>
<a ui-sref="nameOfTheRoute">Link</a>
$stateProvider.state('nameOfTheRoute',{url:'/somewhere', templateUrl:'Content/page.html'})
Keep me informed.