2015-09-08 2 views
7

У меня есть угловое приложение, расположенное в каталоге '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('#')); 

ответ

7

Самый простой способ заключается в использовании

window.location.origin + window.location.pathname 

, который будет возвращать http://example-domain/someApp

Это обеспечит весь базовый URL, даже при использовании виртуальные каталоги/пути. Однако IE не поддерживает происхождение. В результате, вы могли бы объединить компоненты 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.

+0

Downvoter, порекомендовать комментарий? –

+0

Отличный ответ, я бы просто использовал window.location.host вместо имени хоста, если вы используете нестандартный порт. – Julien

3

Вы должны использовать:

location.origin + location.pathname 

Произнесите URL является http://example.com/#/some/path?foo=bar & Баз = 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

+2

Я знаю это. Что, если мой url - http: //example.com/myApp/#/some/path? Foo = bar & baz = xoxo', и я хочу 'http: // example.com/myApp' – Styx

Смежные вопросы