Mi piacerebbe leggere i valori dei parametri di query URL usando AngularJS. Accedo all'HTML con il seguente URL:
http://127.0.0.1:8080/test.html?target=bob
Come previsto, lo location.search
è "?target=bob"
. Per accedere al valore di target , ho trovato vari esempi elencati sul web, ma nessuno di questi funziona in AngularJS 1.0.0rc10. In particolare, sono tutti i seguenti undefined
:
$location.search.target
$location.search['target']
$location.search()['target']
Qualcuno sa cosa funzionerà? (Sto usando $location
come parametro per il mio controller)
Aggiornare:
Di seguito ho pubblicato una soluzione, ma non ne sono completamente soddisfatto. La documentazione nella Guida per gli sviluppatori: Servizi angolari: l'utilizzo di $ location indica quanto segue $location
:
Quando dovrei usare $ location?
Ogni volta che l'applicazione deve reagire a una modifica dell'URL corrente o se si desidera modificare l'URL corrente nel browser.
Per il mio scenario, la mia pagina verrà aperta da una pagina Web esterna con un parametro di query, quindi non sto "reagendo a una modifica dell'URL corrente" di per sé. Quindi forse $location
non è lo strumento giusto per il lavoro (per i dettagli brutti, vedi la mia risposta di seguito). Ho quindi modificato il titolo di questa domanda da "Come leggere i parametri di query in AngularJS usando $ location?" a "Qual è il modo più conciso per leggere i parametri di query in AngularJS?". Ovviamente potrei semplicemente usare javascript ed espressione regolare per analizzare location.search
, ma andare a quel livello basso per qualcosa di così semplice offende davvero la mia sensibilità del programmatore.
Quindi: c'è un modo migliore di usare di $location
quello che faccio nella mia risposta, o c'è un alternato conciso?
http://127.0.0.1:8080/test.html#?target=bob
avrebbe funzionato, notare il #
prima il ?
. $location
è un metodo di routing di secondo livello che non viene inviato al server.
$location.search()['target']
funziona dopo che $locationProvider.html5Mode(true)
è stato chiamato in un browser moderno.