angularjs 如何从angular $location获取host+base

nfs0ujit  于 2023-05-05  发布在  Angular
关注(0)|答案(3)|浏览(139)

我有Angular 的应用程序位于目录'someApp'。Url是http://example-domain/someApp/#/,用于一些状态url,路径是:http://example-domain/someApp/#/user/login。我有“角的方式”得到这部分http://example-domain/someApp/

var redirectUri = $location.absUrl();
redirectUri = redirectUri.substr(0, redirectUri.indexOf('#'));
qzwqbdag

qzwqbdag1#

最简单的方法是使用

window.location.origin + window.location.pathname

返回http://example-domain/someApp
这将提供完整的基本URL,即使使用虚拟目录/路径。但是,IE不支持origin。因此,您可以将url的组件连接起来,以给予如下所示的基目录:

window.location.protocol + "//" + window.location.hostname + window.location.pathname

返回http://example-domain/someApp
如果使用虚拟目录,你将很难使用$location,因为$location.path()返回哈希之后,而$location.host()只返回域,而不是域和目录,这是window.location.hostname + window.location.pathname给你的。

ymdaylpp

ymdaylpp2#

您需要用途:

location.origin + location.pathname

假设URL是http://example.com/#/some/path?foo=bar&baz=xoxo

$location.protocol(); // will give: http
$location.host();     // will give: example.com
location.host         // will give: example.com:8080
$location.port();     // will give: 8080
$location.path();     // will give: /some/path
$location.url();      // will give: /some/path?foo=bar&baz=xoxo

查看完整的detail

k0pti3hp

k0pti3hp3#

对于Angular 2或更高

location.hash      ➡️ #/some/path
location.protocol; ➡️ http: or https:
location.hostname; ➡️ example.com
location.host;     ➡️ example.com:8080
location.port;     ➡️ 8080
location.href;     ➡️ http://example.com:8080/#/some/path
location.origin;   ➡️ http://example.com:8080
location.path;     ➡️ /

相关问题