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"});