Mam aplikację, która powinna obsługiwać różne stany na podstawie niektórych danych API. Jeśli stan mojego app konfiguracja wygląda tak:Jak dynamicznie zmieniać domyślny stan używany przez 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'
});
Następnie chcę 1 2 stany mają być domyślnie wyłączone na podstawie wartości w obiekcie OrderResolve. Zasadniczo używam resolve
, aby pobrać dane API, które informują mnie, czy ten użytkownik ma aktywowaną usługę SharePoint. Jeśli OrderResolve.hasSharepoint == true
, a następnie chcę domyślnie stan order.sharepoint.index
, ale jeśli OrderResolve.hasSharepoint == false
, a następnie chcę, aby domyślnie stan order.sharepoint.setup
. Pierwszy stan pokazuje dane SharePoint, a drugi stan to tylko forma do "ustawienia" usług SharePoint.
Czy istnieje prosty sposób osiągnięcia tego typu funkcji?
Domyślnie ui-Router wydaje się wybrać pierwszy stan w $ stateProvider która w tym przypadku jest 'order.sharepoint.index' .. więc mógłbym pozwolić mu ładować' index' za każdym razem, a następnie po prostu przekierować ponownie do 'setup' z kontrolera' index' jeśli to konieczne .. to po prostu wydaje się być hacky –
udaje ci się to zrobić? Mam ten sam problem, byłoby miło opublikować odpowiedź, jeśli ją znalazłeś – gfpacheco