我有一個應用程序應該基於一些API數據服務於不同的狀態。如果我的應用程序的狀態配置是這樣的:如何動態更改ui-router使用的默認狀態?
$stateProvider.state('order', {
url: '/order/{serviceId}',
controller: 'OrderController',
abstract: true,
resolve: {
OrderResolve: function(Order, $stateParams){
return Order.fetch($stateParams.serviceId);
}
}
}).state('order.sharepoint', {
url: '/sharepoint',
abstract: true,
controller: 'SharePointController'
}).state('order.sharepoint.index', {
url:'',
controller: 'SharePointServiceController'
}).state('order.sharepoint.setup', {
url:'',
controller: 'SharePointSetupController'
}).state('order.sharepoint.confirm', {
url:'',
controller: 'SharePointConfirmController'
});
然後我想1 2的狀態被默認爲關閉基於在OrderResolve對象的值。基本上,我使用resolve
來獲取API數據,告訴我該用戶是否激活SharePoint服務。如果OrderResolve.hasSharepoint == true
那麼我想默認爲order.sharepoint.index
狀態,但是如果OrderResolve.hasSharepoint == false
那麼我想默認爲order.sharepoint.setup
狀態。第一個狀態顯示SharePoint數據,第二個狀態只是「設置」Sharepoint服務的一種形式。
是否有一種簡單的方法來實現這種類型的功能?
默認情況下,UI路由器似乎選擇在$ stateProvider在這種情況下是第一狀態'order.sharepoint.index' ..因此,我可以讓它每次加載'index',然後只要從'index'控制器重新指向'setup'狀態(如果需要的話)。這只是感覺hacky – 2014-11-14 21:27:42
Did你設法使它工作?我在這裏遇到同樣的問題,如果你找到答案,很高興發佈答案 – gfpacheco 2016-06-21 22:06:54