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 $locationcome 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 $locationnon è 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 $locationquello che faccio nella mia risposta, o c'è un alternato conciso?
http://127.0.0.1:8080/test.html#?target=bobavrebbe 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.