AngularJS $ location.path(' /')不会清除search()参数

时间:2015-05-27 00:04:47

标签: angularjs

我正在使用

$location.path('/login');

如果用户未登录,则重定向回登录页面,或者通常使用此方法在任何地方重定向。但是,如果我已经有一个看起来像这样的网址

/register/final-step?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf

并重定向到

$location.path('/');

然后搜索参数不会被清除,所以我得到一个像这样的网址

/?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf

即使我使用UI-Router&#39>

$state.go('home');

?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf

部分仍在那里。

我不明白。每次我需要去另一个州或网址时,我是否真的需要手动清除参数?这似乎不太好 我是合法的。我做错了什么?我不想做window.location.href,因为这会导致整页重新加载,这不是我想做的事情。

如何清除参数?我一定是做错了。

1 个答案:

答案 0 :(得分:10)

?之后的网址部分称为search(在角度中 - 在其他方面,它可能被称为query)。您只处理path,这是?之前的部分。

您可以像这样使用它(是的,它的用途不仅仅是搜索......但在此上下文中它的名称)。

// Get the current value
var curr_search = $location.search();

// Clear the current search
$location.search({});

// Set the current search values
$location.search({key: "value"});