删除AngularJS中的查询字符串

Ola*_*laf 19 query-string angularjs

例如,在从URL读取和处理查询字符串值之后

http://myurl.com/#/?foo=baa
Run Code Online (Sandbox Code Playgroud)

我可以将URL更改为

http://myurl.com/#/?foo=
Run Code Online (Sandbox Code Playgroud)

通过使用

$location.search('myQueryStringParameter', '');
Run Code Online (Sandbox Code Playgroud)

如何完全摆脱查询字符串(没有显式重定向或服务器端操作等),以便只

http://myurl.com/#/
Run Code Online (Sandbox Code Playgroud)

留在浏览器中?它应该相当简单,但我找不到任何参考.

tox*_*xaq 41

你很近,你需要设置null

$location.search('myQueryStringParameter', null); 
Run Code Online (Sandbox Code Playgroud)

来自ng.$位置文档

如果search是字符串,则paramValue将仅覆盖单个搜索参数.如果paramValue是一个数组,它会将参数设置为逗号分隔值.如果paramValue为null,则将删除该参数.

  • @toxaq但重新加载页面 (2认同)

Buu*_*yen 26

试试这个:

$location.url($location.path())
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅文档

  • 但它重新加载页面 (6认同)
  • @saf 不要忘记在您的路线中设置 `reloadOnSearch:false` (2认同)

小智 6

最简单的解决方案是在$ location.url中执行与internaly相同的操作

$location.search('')
Run Code Online (Sandbox Code Playgroud)