Ich bin nicht sicher, ob die Art, wie ich es tue, korrekt ist, würde jeder Rat geschätzt werden.Wie umleiten, um zu zeigen, wenn bestimmte stateParam leer ist
Ich habe einen Restaurant Selector, aus dem der Benutzer ein Restaurant auswählen kann. Dann laden alle anderen Kind-Zustände Inhalte, die für das ausgewählte Restaurant spezifisch sind. Aber ich muss standardmäßig einen Kinderstatus auswählen, einschließlich eines Restaurants, das entweder basierend auf dem nächstgelegenen Standort des Nutzers oder auf Cookie-Daten ausgewählt wird, wenn diese zuvor ausgewählt wurden. Aber ich bin mir nicht sicher, wie ich standardmäßig zu einem Kind-Status umleiten kann, ohne die Restaurant-ID bereits zu kennen?
Eine Bastardversion meines Codes unten zu veranschaulichen.
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'
})
Ein Bild unten zeigen, was auf dem vorderen Ende passiert: www.merrywidowswine.com/ss.jpg
Danke, das weist mich in die richtige Richtung, ich werde ein Spiel machen und sehen, ob ich alles in Gang bringen kann. Prost! –
Das Problem (das ich hatte) mit Ihrer # 1-Lösung ist, dass alle auflösenden Eigenschaften aufgelöst werden, bevor 'onEnter' ausgeführt wird. Ich habe ein Problem mit GitHub gestartet: https://github.com/angular-ui/ui-router/issues/1102. Ich bin mir nicht sicher, ob es einen versteckten Haken zum Kurzschluss gibt, wenn die aufgelösten Parameter vor der Weiterleitung nicht aufgelöst werden sollen (wenn zum Beispiel die Route einen bestimmten Parameter benötigt). – Beez
Anstelle von '$ state.transitionTo' wäre es vielleicht besser,' $ state.go' zu verwenden, wie hier [hier] angegeben (https://github.com/angular-ui/ui-router/wiki/Quick-Reference#). state-1) – Daniele