I am using
$location.path('/login');
to redirect back to a login page if a user is not logged in, or in general use this to redirect anywhere. But If I already have an url that looks like this
/register/final-step?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf
and redirect to
$location.path('/');
then the search parameters do not get cleared, so I get an url like this
/?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf
Even if I use UI-Router's
$state.go('home');
the
?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf
part is still there.
I don't understand. Do I really have to clear parameters manually this every time I need to go to another state or url? This does not seem very
legit to me. What do I do wrong? I don't want to do window.location.href
because that makes a full page reload which is not something I want to do.
What should I do to clear the parameters? I must be doing something wrong.
The part of the url after the ?
is called the search
(in angular -- in other things it may be referred to as the query
). You were dealing with only the path
, which is the part before the ?
.
You can use it like this (and yes, it's used for way more than just searches...but that's its name in this context).
// Get the current value
var curr_search = $location.search();
// Clear the current search
$location.search({});
// Set the current search values
$location.search({key: "value"});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With