Jeśli chodzi o $ location.search, w dokumentach jest napisane :
Zwróć część wyszukiwania (jako obiekt) bieżącego adresu URL po wywołaniu bez żadnego parametru.
W moim adresie URL mój ciąg zapytania ma parametr „? Test_user_bLzgB” bez wartości. Również '$ location.search ()' zwraca obiekt. Jak uzyskać rzeczywisty tekst?
javascript
angularjs
Ian Warburton
źródło
źródło
$location.search()
ale chcę sprawdzić "obiekt", który otrzymujesz, gdy go nazywasz ...Odpowiedzi:
Nie jestem pewien, czy zmieniło się od czasu zaakceptowania zaakceptowanej odpowiedzi, ale jest to możliwe.
$location.search()
zwróci obiekt składający się z par klucz-wartość, takich samych jak łańcuch zapytania. Klucz, który nie ma wartości, jest po prostu przechowywany w obiekcie jako prawdziwy. W tym przypadku obiektem będzie:Dostęp do tej wartości można uzyskać bezpośrednio za pomocą
$location.search().test_user_bLzgB
Przykład (z większym ciągiem zapytania): http://fiddle.jshell.net/TheSharpieOne/yHv2p/4/show/?test_user_bLzgB&somethingElse&also&something=Somethingelse
Uwaga: ze względu na skróty (ponieważ przejdzie do http://fiddle.jshell.net/#/url , co spowoduje utworzenie nowych skrzypiec), to skrzypce nie będą działać w przeglądarkach, które nie obsługują historii js (nie będą działać w IE <10)
Edycja:
jak wskazali w komentarzach @Naresh i @DavidTchepak,
$locationProvider
również należy poprawnie skonfigurować: https://code.angularjs.org/1.2.23/docs/guide/$location#-location-service-configurationźródło
$locationProvider
również musi być poprawnie skonfigurowane: code.angularjs.org/1.2.23/docs/guide/… (To mnie zaskoczyło . Mam nadzieję, że link zaoszczędzi trochę czasu.)Jeśli chcesz spojrzeć na ciąg zapytania jako tekst, możesz użyć:
$window.location.search
źródło
$location.search()
zwraca obiekt, składający się z kluczy jako zmiennych i wartości jako wartości. A więc: jeśli napiszesz ciąg zapytania w ten sposób:Możesz łatwo uzyskać taki tekst:
Jeśli nie chcesz używać klucza, wartości takiej jak? Foo = bar, sugeruję użycie skrótu #test_user_bLzgB,
i dzwonię
zwróci „test_user_bLzgB”, czyli dane, które chcesz odzyskać.
Dodatkowe informacje:
Jeśli użyłeś metody zapytania i otrzymujesz pusty obiekt z $ location.search (), to prawdopodobnie dlatego, że Angular używa strategii hashbang zamiast html5 ... Aby to działało, dodaj tę konfigurację do swojego moduł
źródło
Najpierw popraw format adresu URL, aby uzyskać ciąg zapytania, użyj #? Q = ciąg, który działa dla mnie
Wprowadź usługę $ location do kontrolera
Więc wyjście powinno być abcd
źródło
możesz tego również użyć
źródło
Jeśli twój
$location.search()
nie działa, upewnij się, że masz:1)
html5Mode(true)
jest konfigurowany w konfiguracji modułu aplikacji2)
<base href="https://stackoverflow.com/">
jest obecny w kodzie HTMLBibliografia:
źródło
Angular nie obsługuje tego rodzaju ciągu zapytania.
Część adresu URL zawierająca zapytanie ma być
&
oddzieloną sekwencją par klucz-wartość, dzięki czemu można ją doskonale zinterpretować jako obiekt.W ogóle nie ma interfejsu API do zarządzania ciągami zapytań, które nie reprezentują zestawów par klucz-wartość.
źródło
W moim przykładzie NodeJS mam adres URL „localhost: 8080 / Lists / list1.html? X1 = y”, przez który chcę przejść i pobrać wartości.
Aby pracować z $ location.search () w celu uzyskania x1 = y, zrobiłem kilka rzeczy
moja lista1.js ma
a moja list1.html ma
Przewodnik: https://code.angularjs.org/1.2.23/docs/guide/$location
źródło
Moja poprawka jest prostsza, tworzy fabrykę i implementuje jako jedną zmienną. Na przykład
źródło