I'm using ui-router for AngularJS; I'm handling the '$stateChangeSuccess'
event, and trying to get the full path (after '#') for the current state. $location.hash()
returns an empty string and $state.url
returns only the portion of the path that applies to the nested state.
My full path #/a/b
$state.url == "/b"
$locadtion.hash() == ""
How can I get #/a/b
or /a/b
?
I'm using ui-router for AngularJS; I'm handling the '$stateChangeSuccess'
event, and trying to get the full path (after '#') for the current state. $location.hash()
returns an empty string and $state.url
returns only the portion of the path that applies to the nested state.
My full path #/a/b
$state.url == "/b"
$locadtion.hash() == ""
How can I get #/a/b
or /a/b
?
4 Answers
Reset to default 12You can always use:
window.location
or:
window.location.hash
(if that's what you want).
Have you tried $location.url()? That should include the hash. Actually, my test reveals that it doesn't grab the hash.
$location docs
As an aside, you may want to look into setting html5Mode in $locationProvider.
You should listen to the $locationChangeSuccess
event.
There you can use $location.path()
or window.location.hash
depending on your needs.
try concatenating the URI parts together
window.location.origin + window.location.pathname + window.location.hash
PS: doesn't work on Firefox :(