2013-09-16 27 views
17

Dopo lettura e l'elaborazione di un valore querystring dal URL, ad esempioRimozione querystring in AngularJS

http://myurl.com/#/?foo=baa 

posso modificare l'URL

http://myurl.com/#/?foo= 

utilizzando

$location.search('myQueryStringParameter', ''); 

Come faccio a eliminare completamente la stringa di query (senza reindirizzamenti espliciti o azioni lato server e così via) in modo che solo

http://myurl.com/#/ 

rimane nel browser? Dovrebbe essere abbastanza semplice, ma non riesco a trovare alcun riferimento.

risposta

24

Prova questo:

$location.url($location.path()) 

Vedi documentation per ulteriori informazioni.

+0

Certo! Grazie, funziona esattamente come dovrebbe. – Olaf

+6

ma ricarica la pagina – saf

+0

Cancella tutte le chiavi/valori-chiave di querystring. Cosa succede se voglio solo rimuovere solo uno di loro? – Korayem

34

Si erano vicini, avete bisogno di impostare nulla

$location.search('myQueryStringParameter', null); 

Da ng.$location documentation

Se la ricerca è una stringa, quindi paramValue ignorerà un solo parametro di ricerca. Se paramValue è un array, imposterà il parametro come valore separato da virgole. Se paramValue è null, il parametro verrà cancellato.

+1

Cool, grazie. Sembra funzionare. – Olaf

+0

Questo per qualche motivo sta cancellando tutti i miei parametri. Se ho name = Olly e position = forward e chiamo $ location.search (position, null), tutto viene cancellato. – Alessandro

+1

@Alessandro se riesci a creare un progetto di prova che lo riproduca, registralo come un bug. Ha funzionato come documentato per me per un lungo periodo (in terra angolare) ora. – toxaq

-2

provare questo

$location.url('/'); 

Vedi documentation per ulteriori informazioni.

+0

Ciò reindirizza l'utente al percorso root e NON è ciò che l'OP voleva. – Ashwin

4

La soluzione più semplice è quello di fare lo stesso in internaly $ location.url

$location.search('')