2014-12-29 13 views
6

Abbiamo una pagina di ricerca e abbiamo migliaia di attributi di ricerca che possono essere definiti da un pannello di amministrazione. Una caratteristica pagina dei risultati di ricerca ha un URL simile:Definizione di querystring dinamico per ui-router angolare

http://example.com/search?a12=3213&a314=412412&a247=1941829&.... 

Quando vogliamo attuare tale pagina come SPA con AngularJS utilizzando angular-ui-router, non riuscivo a capire, come possiamo definire la configurazione percorso e come può leggiamo tutti i parametri di ricerca da querystring. Perché ui-router obbliga a definire tutte le possibilità di queryparam sulla configurazione del percorso per utilizzarle in $stateParams.

$stateProvider.state('search', { 
    url: '/search?a1&a2&a3&a4&a5' // what about a1314? 
    controller: function ($stateParams) { 
     console.log($stateParams.a1314); 
    } 
}); 

Conosci una soluzione alternativa?

+0

Credo che ci sia ancora una soluzione ufficiale: https://github.com/angular-ui/ui- router/problemi/84, ma ci sono alcune soluzioni alternative come questa: https://github.com/angular-ui/ui-router/issues/202 – L42y

risposta

2

è possibile utilizzare $ location.search() nella parte di ricerca controller

è tornare url: '/search' di ricerca di percorso (come oggetto) della URL corrente quando viene chiamato senza alcun parametro.

var searchObject = $location.search(); 

// => {a12: '3213', a314: '412412'} 

console.log(searchObject .a12); //3213 

e per percorso è possibile utilizzare

url: '/search*' 

quindi abbinerà

+2

Il problema principale è, se un url viene fornito con una query param che non è definita in route config, ui-router lo rimuove dall'URL e mostra la pagina senza di esso. –

+0

prova a utilizzare '/ search *' –

+0

Come posso generare un link a quell'URL? –

Problemi correlati