Chciałbym odczytać wartości parametrów zapytania URL za pomocą AngularJS. Uzyskuję dostęp do kodu HTML za pomocą następującego adresu URL:
http://127.0.0.1:8080/test.html?target=bob
Zgodnie z oczekiwaniami location.search
jest "?target=bob"
. Aby uzyskać dostęp do wartości celu , znalazłem różne przykłady wymienione w Internecie, ale żaden z nich nie działa w AngularJS 1.0.0rc10. W szczególności są to undefined
:
$location.search.target
$location.search['target']
$location.search()['target']
Czy ktoś wie, co będzie działać? (Używam $location
jako parametru do mojego kontrolera)
Aktualizacja:
Poniżej zamieściłem rozwiązanie, ale nie jestem do końca z niego zadowolony. Dokumentacja na stronie Developer Guide: Angular Services: Korzystanie z $ location zawiera następujące informacje na temat $location
:
Kiedy powinienem użyć $ location?
Za każdym razem, gdy aplikacja musi zareagować na zmianę bieżącego adresu URL lub jeśli chcesz zmienić bieżący adres URL w przeglądarce.
W moim scenariuszu moja strona zostanie otwarta z zewnętrznej strony internetowej z parametrem zapytania, więc per se nie reaguję na zmianę bieżącego adresu URL. Więc może $location
nie jest odpowiednie narzędzie do pracy (brzydkie szczegóły, patrz moja odpowiedź poniżej). Dlatego zmieniłem tytuł tego pytania z „Jak odczytać parametry zapytania w AngularJS za pomocą $ location?” na „Jaki jest najbardziej zwięzły sposób odczytywania parametrów zapytania w AngularJS?”. Oczywiście, mógłbym po prostu użyć javascript i wyrażeń regularnych do parsowania location.search
, ale przejście do niskiego poziomu dla czegoś tak podstawowego naprawdę obraża moją wrażliwość programisty.
Więc: czy jest lepszy sposób na użycie $location
niż w mojej odpowiedzi, czy też jest zwięzła alternatywa?
http://127.0.0.1:8080/test.html#?target=bob
będzie działać, zwróć uwagę na #
wcześniej ?
. $location
to metoda routingu drugiego poziomu, która nie jest wysyłana do serwera.
$location.search()['target']
działa po $locationProvider.html5Mode(true)
został wywołany w nowoczesnej przeglądarce.