2013-12-09 18 views
23

Sto usando gli stati per modificare i dati in una tabella. Gli URL hanno il formato /zone/:zoneCode.
Tuttavia, quando si accede a solo /zone, desidero l'impostazione predefinita su un determinato numero zoneCode.Come impostare uno stato predefinito con ui-router angolare

Questo è il mio codice:

.state('zone', 
{ 
    url:'/zone', 
    controller:'ZoneController', 
    templateUrl:'views/zone.html' 
}) 
.state('zone.code', 
{ 
    url:'/:zoneCode', 
    templateUrl:function(stateParams) 
    { 
     return 'views/zone-codes/'+stateParams.zoneCode+'.html'; 
    } 
} 

Il modello caricato per ogni visualizzazione secondaria contiene una tabella che visualizza i dati.
Se non è presente zoneCode nell'URL, la tabella non esiste perché il ui-view non sapeva caricare un templateUrl.

Come posso impostare un valore predefinito per lo stato genitore?

Grazie.

+0

Cosa? Non è nemmeno vicino a duplicare ... Quella domanda riguarda l'impostazione di un fallback per URL non mappati, la mia domanda riguarda il cambiamento di uno stato figlio da un controller. – Francisc

risposta

53

Anche se la domanda è abbastanza vecchia, vorrei comunque fornire una risposta poiché ho avuto lo stesso problema. La risposta può essere trovata in this Stackoverflow question. Per applicare la risposta al vostro caso:

$urlRouterProvider.when('/zone','/zone/'+zoneCode); 

I controlli urlRouterProvider per vedere se l'url è [yourURL]/zona. Se questo è il caso, verrà reindirizzato a [yoururl]/zone/zoneCode, con il codice zona come quello specificato.

Spero che aiuti qualcuno!

+0

Grazie, Ivor. [caratteri extra] – Francisc

+1

+1 @IvorG Ho anche visto esempi in cui l'app.config inizia '$ urlRouterProvider.otherwise ("/");' (cambia come appropriato) – Mawg

+1

inoltre, fyi, se si utilizza questa soluzione, il genitore deve non essere astratto. https://github.com/angular-ui/ui-router/issues/497 – Noremac

10

È anche possibile, gestirà percorsi che non esistono reindirizzando a un percorso predefinito impostato dall'utente.

$urlRouterProvider.otherwise('/'); 

$stateProvider.state("zone", { 
    url: "/", 
    templateUrl: "views/zone.html", 
}); 
Problemi correlati