私が行っているやり方が正しいかどうか分かりませんが、助言をいただければ幸いです。特定の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##) state-1) – Daniele