2013-12-09 2 views
28

ho questi stati:Parametro stringa di query in URL ui-router?

.state('quotes', { 
    abstract: true, 
    url: '/quotes' 
}) 
.state('quotes.new', { 
    url: '/new', 
    templateUrl: 'views/quote-form.html', 
    controller: 'QuoteFormCtrl' 
}) 
.state('quotes.new.customer', { 
    url: '?customer', 
    templateUrl: 'views/quote-form.html', 
    controller: 'QuoteFormCtrl' 
}) 

Quando mi ha colpito l'URL /quotes/new?customer=123 la stringa di query cliente è spogliato di tutto, e non mi resta allo stato quotes.new?.

Ciò che avrebbe più senso per me è solo aggiungere uno params: ['customer'] alla definizione dello stato quotes.new, ma questo mi dà un errore lamentando che io specifichi sia url che params.

Qualsiasi esempio di ciò che sto cercando di fare sarebbe molto apprezzato.

risposta

45

è necessario modificare la proprietà url stringa per includere il parametro di query customer, in questo modo:

.state('quotes.new', { 
    url: '/new?customer', 
    templateUrl: 'views/quote-form.html', 
    controller: 'QuoteFormCtrl' 
}); 

parametri multipli possono essere aggiunti separandoli con una &:

.state('mystate', { 
    url: '/myState?paramOne&paramTwo 
    //... 
}); 

Vedi the docs

+0

Grazie. Sapevo che doveva essere più semplice di quello che stavo facendo. – kbanman

+8

come funziona con '$ state.go'? '$ state.go ('quotes.new', {customer: 'dave'})'? – connorbode

+1

[yup] (http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#go) – calebboyd