Qual é a maneira mais concisa de ler os parâmetros de consulta no AngularJS?
Gostaria de ler os valores dos parâmetros de consulta de URL usando o AngularJS. Estou acessando o HTML com o seguinte URL:
http://127.0.0.1:8080/test.html?target=bob
Como esperado,location.search
é"?target=bob"
. Para acessar o valor dealvoEu encontrei vários exemplos listados na web, mas nenhum deles funciona no AngularJS 1.0.0rc10. Em particular, os seguintes são todosundefined
:
$location.search.target
$location.search['target']
$location.search()['target']
Alguém sabe o que vai funcionar? (Estou a usar$location
como um parâmetro para o meu controlador)
Atualizar:
Eu publiquei uma solução abaixo, mas não estou totalmente satisfeito com isso. A documentação emGuia do desenvolvedor: Angular Services: usando $ location afirma o seguinte sobre$location
:
Quando devo usar a localização $?
Sempre que seu aplicativo precisar reagir a uma alteração no URL atual ou se você quiser alterar o URL atual no navegador.
Para o meu cenário, minha página será aberta a partir de uma página da Web externa com um parâmetro de consulta, portanto, não estou "reagindo a uma alteração no URL atual" em si. Então talvez$location
não é a ferramenta certa para o trabalho (para os detalhes feios, veja minha resposta abaixo). Por isso, mudei o título desta pergunta de "Como ler parâmetros de consulta no AngularJS usando $ location?" para "Qual é a maneira mais concisa de ler os parâmetros de consulta no AngularJS?". Obviamente eu poderia usar JavaScript e expressões regulares para analisarlocation.search
, mas esse baixo nível para algo tão básico realmente ofende minha sensibilidade de programador.
Então, existe uma maneira melhor de usar$location
do que eu faço na minha resposta, ou existe uma alternativa concisa?