Как проще всего прочитать параметры запроса в AngularJS?

Я хотел бы прочитать значения параметров запроса URL с использованием AngularJS. Я получаю доступ к HTML со следующим URL-адресом:

http://127.0.0.1:8080/test.html?target=bob

Как и ожидалось, location. searchis "?target=bob". Для доступа к значению targetя нашел различные примеры, перечисленные в Интернете, но ни один из них не работает в AngularJS 1.0.0rc10. В частности, все следующие undefined:

  • $location.search.target
  • $location.search['target']
  • $location.search()['target']

Кто-нибудь знает, что сработает? (Я использую $locationв качестве параметра моего контроллера)


Обновление:

Ниже я разместил решение, но оно меня не полностью устраивает. В документации в Руководство разработчика: Службы Angular: использование $locationговорится о $locationследующее:

Когда следует использовать $location?

Каждый раз, когда вашему приложению необходимо отреагировать на изменение текущего URL или если вы хотите изменить текущий URL в браузере.

В моем сценарии моя страница будет открыта с внешней веб-страницы с параметром запроса, поэтому я не «реагирую на изменение текущего URL-адреса» как таковой. Так что, возможно, $locationне подходит для этой работы (уродливые подробности см. в моем ответе ниже).Поэтому я изменил заголовок этого вопроса с «Как читать параметры запроса в AngularJS, используя $location?» на «Какой самый краткий способ чтения параметров запроса в AngularJS?». Очевидно, я мог бы просто использовать javascript и регулярное выражение для синтаксического анализа location.search, но переход на такой низкий уровень для чего-то настолько простого действительно оскорбляет мои чувства программиста.

Итак: есть ли лучший способ использовать $location, чем я в своем ответе, или есть краткая альтернатива?

311
задан Damjan Pavlica 28 July 2015 в 06:20
поделиться