ho cercato di rispondere il simile (se non uguale) qui:
Angular js - route-ui add default parmeter
C'è un working plunker, risolvendo il problema per a language
invece che per un city
(ma il concetto è lo stesso)
così, ci sarebbe/dovrebbe introdurre alcuni super stato 'root'.
Nel nostro caso, possiamo anche usare un po 'di espressione regolare i valori limite consentiti - perché sarebbe difficile indovinare che cosa è city
e ciò che è events
.state('root', {
url: '/{city:(?:Prague|Bristol|Denver)}',
abstract: true,
template: '<div ui-view=""></div>',
params: {lang : { squash : true, value: 'Prague' }}
})
Ciò che è importante qui è l'impostazione params : {}
. Dice che il valore predefinito è 'Praga', quindi quella sarebbe la città se nessuna è selezionata. Ciò che è anche importante - dovrebbe essere schiacciato, saltato se c'è una corrispondenza con il valore di parametro 'Praga':
params: {lang : { squash : true, value: 'Prague' }}
Ora, possiamo introdurre qualche stato annidato (s), che avrebbe dichiarato 'root' come i genitori:
.state('events',{
parent: 'root',
url: '/events/:id'
...
})
Controllare l'esempio di lavoro (con un linguaggio al posto di città) here.Per maggiori dettagli vedere l'originale Q & A
fonte
2015-08-05 16:04:35
Sì, è per questo che sto facendo questa domanda, perché voglio evitare questo ... Ma si, giusto punto. Se nessuno conosce una soluzione migliore, immagino che questa sia la strada da percorrere. –
Non è una soluzione preferita ma risolve il problema. –