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.searchjest "?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 $locationjako 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 $locationnie 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 $locationniż w mojej odpowiedzi, czy też jest zwięzła alternatywa?
http://127.0.0.1:8080/test.html#?target=bobbędzie działać, zwróć uwagę na #wcześniej ?. $locationto 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.