AngularJS$location.path(';/';)未清除search()参数

AngularJS$location.path(';/';)未清除search()参数,angularjs,Angularjs,我正在使用 $location.path('/login'); 如果用户未登录,则重定向回登录页面,或者通常使用此选项重定向到任何位置。但是如果我已经有了一个像这样的url /register/final step?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf 并重定向到 $location.path('/') 然后搜索参数没有被清除,所以我得到一个像这样的url /?令牌=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf 即使我使用UI路由器

我正在使用

$location.path('/login');
如果用户未登录,则重定向回登录页面,或者通常使用此选项重定向到任何位置。但是如果我已经有了一个像这样的url

/register/final step?token=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf

并重定向到

$location.path('/')

然后搜索参数没有被清除,所以我得到一个像这样的url

/?令牌=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf

即使我使用UI路由器

$state.go('home');

?令牌=mF6xY2cQvB9Vccb0J1l5uTu4H10lWkkf

部分仍然存在

我不明白。每次我需要转到另一个状态或url时,我真的必须手动清除这些参数吗?这似乎不是很好 对我来说是合法的。我做错了什么?我不想做
window.location.href
,因为这会导致整个页面重新加载,而这不是我想做的事情


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

之后的url部分称为
搜索(从角度来说,它可能被称为
查询
)。您只处理
路径
,它是
前面的部分

您可以这样使用它(是的,它不仅仅用于搜索……但这是它在上下文中的名称)


“home”状态URL是什么样子的?奇怪的是,我发现正好相反。当我转换到一个新的状态时,查询参数被清除。当您使用$location时呢?是一样的吗?我不使用
$location
来更改状态没有问题!我最近查阅了一些资料,这些资料让我记忆犹新。谢谢!我开始遍历$compose函数,并想知道一个错误的参数是从哪里来的。这帮了大忙,我不明白为什么会有这么多人投赞成票。它没有回答这个问题。有人知道为什么设置路径不能清除搜索吗?或者,与每次设置$location.path时将搜索设置为“无”相比,有一个更简单的解决方法吗?@LocalTrav请再次尝试阅读答案。它准确地回答了这个问题,包括为什么设置路径不能清除搜索。
// Get the current value
var curr_search = $location.search();

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

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