Я хотел бы прочитать значения параметров запроса URL, используя AngularJS. Я получаю доступ к HTML со следующего URL:
http://127.0.0.1:8080/test.html?target=bob
Как и ожидалось, location.search
есть "?target=bob"
. Для доступа к значению target я нашел несколько примеров в Интернете, но ни один из них не работает в AngularJS 1.0.0rc10. В частности, это все undefined
:
$location.search.target
$location.search['target']
$location.search()['target']
Кто-нибудь знает, что будет работать? (Я использую $location
в качестве параметра для моего контроллера)
Обновить:
Я разместил решение ниже, но я не совсем доволен им. Документация в Руководстве разработчика: Angular Services: использование $ location гласит следующее $location
:
Когда я должен использовать $ location?
Каждый раз, когда ваше приложение должно реагировать на изменение текущего URL или если вы хотите изменить текущий URL в браузере.
В моем случае моя страница будет открыта с внешней веб-страницы с параметром запроса, поэтому я не "реагирую на изменение текущего URL" как таковой. Так что, возможно, $location
это не тот инструмент для работы (подробности см. Ниже). Поэтому я изменил название этого вопроса с «Как читать параметры запроса в AngularJS, используя $ location?» на «Какой самый краткий способ прочитать параметры запроса в AngularJS?». Очевидно, что я мог бы просто использовать javascript и регулярные выражения для разбора location.search
, но переход на этот низкоуровневый уровень для чего-то такого базового действительно оскорбляет мои чувства программиста.
Итак: есть ли лучший способ использовать, $location
чем я в своем ответе, или есть краткая альтернатива?
http://127.0.0.1:8080/test.html#?target=bob
будет работать, обратите внимание, #
прежде чем ?
. $location
это метод маршрутизации второго уровня, который не отправляется на сервер.
$location.search()['target']
работает после того, $locationProvider.html5Mode(true)
как был вызван в современном браузере.