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