2016-10-03 22 views
0

在IIS中,我的web应用程序在网站下的应用程序中运行。因此,它不是在www.example.com可访问,它实际上在www.example.com/somepath/如何在#角度之前获得路径

如果我使用window.location.pathname,我可以在/somepath/部分获得我的手,但是对于Angular的$location.path(),我什么也没得到。从官方文档看,似乎$location.path()应该只能得到散列之后的任何内容,例如www.example.com/somepath/#/nextbit会给我/nextbit

那么我该如何获得网站托管的实际路径?

+0

的可能的复制得到的URL的一部分[在Web浏览器中获取当前网址](http://stackoverflow.com/questions/1034621/get-current-url-in-web-browser) – Ryan

+0

'absUrl'就是你需要的。 – Casey

+0

@瑞恩不,这是不同的。我不是在寻找完整的网址(那么absUrl就是完整的答案)。这特别是关于获取网站的路径,而不是页面。在我的例子中,目标是获得'/ somepath /',而location.href将提供完整的路径。 –

回答

2

当你想要做的采用了棱角分明$location服务它,试试这个:

var baseUrl = $location.absUrl().replace('#/' + $location.url(), ''); 

absUrl()会得到整个URL,而url()会后​​

0

由于散列之前发出的信息与Angular的内部运作并不完全相关,我不认为绕过Angular的内部方法($location)在这种情况下是不好的做法。

我会去与你原来的假设,因为它仍然可以工作:

location.pathname 

除非你是担心内部角的绑定已经解雇之前得到这条道路(这不应该有影响静态的IIS应用程序路径),这应该没问题。

+0

如果您打算编写任何测试,最好使用$ location。 – Casey