Non sono sicuro che il modo in cui lo sto facendo sia corretto, qualsiasi consiglio sarebbe apprezzato.Come reindirizzare per specificare se stateParam specifico è vuoto
Ho un Selettore ristorante, da cui l'utente può selezionare un ristorante. Quindi tutti gli altri stati secondari caricano il contenuto specifico per il ristorante selezionato. Ma ho bisogno di avere uno stato figlio selezionato di default, incluso un ristorante, che sarà selezionato in base alla posizione più vicina degli utenti o ai dati dei cookie se ne hanno selezionato uno in precedenza. Ma non sono sicuro di come reindirizzare a uno stato figlio per impostazione predefinita senza conoscere già l'ID del ristorante?
Una versione bastardizzata del mio codice qui sotto per illustrare.
app.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/restaurant/[some id based on cookie info]/our-food"); // if no id is set, then I want to get it from a cookie, but then how do i do the redirect?
$stateProvider
.state('restaurant', {
url: '/restaurant/:restaurantId',
template: "<ui-view/>",
controller: function($state, $stateParams, Data, RestaurantService, $cookieStore) {
if(typeof $stateParams.restaurantId !== 'undefined') {
// get the restaurantID from the cookie
}
}
})
.state('restaurant.our-food', {
url: '/our-food',
templateUrl: function($stateParams) {
return 'templates/food-food.html?restaurantId=' + $stateParams.restaurantId;
},
controller: 'SubNavCtrl'
})
.state('restaurant.glutenfree-vegetarian', {
url: '/glutenfree-vegetarian',
templateUrl: function($stateParams) {
return 'templates/food-vegetarian.html?restaurantId=' + $stateParams.restaurantId;
},
controller: 'SubNavCtrl'
})
Un'immagine di seguito per illustrare ciò che sta accadendo sul front-end: www.merrywidowswine.com/ss.jpg
Grazie, questo mi indica la direzione giusta, sto per giocare e vedere se riesco a far funzionare tutto. Saluti! –
Il problema (che avevo) con la tua soluzione n. 1 è che tutte le proprietà di risoluzione sono risolte prima che venga eseguito 'onEnter'. Ho iniziato un problema su github: https://github.com/angular-ui/ui-router/issues/1102. Non sono sicuro che ci sia un gancio nascosto da cortocircuitare se non si desidera risolvere i parametri risolti prima di reindirizzare (se, ad esempio, la rotta richiede un parametro particolare). – Beez
Invece di '$ state.transitionTo' forse sarebbe meglio usare' $ state.go', come indicato [qui] (https://github.com/angular-ui/ui-router/wiki/Quick-Reference# state-1) – Daniele