2013-09-16 10 views
17

po przeczytaniu i przetwarzania wartości ciągu kwerendy z zawartości, na przykładUsuwanie QueryString w angularjs

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

można zmienić URL

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

stosując

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

Jak całkowicie pozbyć się ciągu zapytań (bez wyraźnego przekierowania lub działania po stronie serwera itd.), Tak aby tylko

http://myurl.com/#/ 

pozostaje w przeglądarce? To powinno być dość proste, ale nie mogę znaleźć żadnego odniesienia.

Odpowiedz

24

Spróbuj tego:

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

Zobacz documentation aby uzyskać więcej informacji.

+0

Oczywiście! Dzięki, działa dokładnie tak, jak powinien. – Olaf

+6

, ale odświeża stronę – saf

+0

Powoduje usunięcie wszystkich kluczy/wartości-klucza zapytania. Co jeśli chcę tylko usunąć tylko jedną z nich? – Korayem

34

Byłaś blisko, trzeba było ustawić zerowy

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

Od ng.$location documentation

Jeżeli wyszukiwanie jest ciągiem znaków, wtedy paramValue zastąpi tylko jeden parametr wyszukiwania. Jeśli parametr paramValue jest tablicą, ustawi parametr jako wartość oddzielaną przecinkami. Jeśli parametr paramValue ma wartość null, parametr zostanie usunięty.

+1

Fajnie, dzięki. Wydaje się działać. – Olaf

+0

To z jakiegoś powodu usuwa wszystkie moje parametry. Jeśli mam nazwę = Olly i position = forward i dzwonię do $ location.search (position, null), wszystko zostanie usunięte. – Alessandro

+1

@Alessandro, jeśli możesz utworzyć projekt testowy, który go powiela, zaloguj go jako błąd. Udało mi się to udokumentować na długi czas (w Angular Land) teraz. – toxaq

-2

spróbować

$location.url('/'); 

Zobacz documentation aby uzyskać więcej informacji.

+0

To przekieruje użytkownika do ścieżki głównej i NIE jest to, czego chciał OP. – Ashwin

4

Najprostszym rozwiązaniem jest zrobić to samo jako wewnętrznie w $ location.url

$location.search('') 
Powiązane problemy