Angularjs 默认情况下,将angular ui路由器配置为使用绝对URL
我的带有ui路由器的angular应用程序正在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
/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.