我不知道如果我這樣做的方式是正確的,任何意見將不勝感激。如何重定向到狀態,如果特定的stateParam爲空
我有一個餐廳選擇器,用戶可以從中選擇一家餐館。然後,所有其他的孩子狀態都會加載特定於所選餐廳的內容。但是我需要默認選擇一個孩子狀態,包括一個餐廳,根據用戶最近的位置選擇一個餐廳,如果他們之前選擇了一個,則選擇cookie數據。但是,我不知道如何在默認餐館ID的情況下重定向到兒童狀態?
我的代碼的一個混蛋版本下面來說明。
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'
})
下面的圖像來說明什麼是在前端發生的事情: www.merrywidowswine.com/ss.jpg
謝謝,這確實指向了我正確的方向,我將會有一個戲劇,看看我是否能夠完成所有工作。乾杯! –
你的#1解決方案的問題(我有)是所有解析屬性在執行'onEnter'前解析。我在github上開始了一個問題:https://github.com/angular-ui/ui-router/issues/1102。如果您不希望在重定向之前解析已解析的參數(例如,如果路由需要特定參數),我不確定是否存在隱藏的短路。 – Beez
而不是'$ state.transitionTo'可能會更好地使用'$ state.go',正如[here]所述(https://github.com/angular-ui/ui-router/wiki/Quick-Reference#狀態-1) – Daniele