加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何动态更改ui-router使用的默认状态?

发布时间:2020-12-17 18:03:51 所属栏目:安全 来源:网络整理
导读:我有一个应用程序应该根据一些API数据服务于不同的状态.如果我的应用程序的状态配置如下所示: $stateProvider.state('order',{ url: '/order/{serviceId}',controller: 'OrderController',abstract: true,resolve: { OrderResolve: function(Order,$statePa
我有一个应用程序应该根据一些API数据服务于不同的状态.如果我的应用程序的状态配置如下所示:

$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',controller: 'SharePointController'

}).state('order.sharepoint.index',{
    url:'',controller: 'SharePointServiceController'

}).state('order.sharepoint.setup',controller: 'SharePointSetupController'

}).state('order.sharepoint.confirm',controller: 'SharePointConfirmController'
});

然后我希望默认2个状态中的1个基于OrderResolve对象中的值.基本上,我使用resolve来获取API数据,告诉我此用户是否已激活SharePoint服务.如果OrderResolve.hasSharepoint == true,那么我想默认为order.sharepoint.index状态,但是如果OrderResolve.hasSharepoint == false,那么我想默认为order.sharepoint.setup状态.第一个状态显示SharePoint数据,第二个状态只是“设置”Sharepoint服务的表单.

有没有一种简单的方法来实现这种功能?

解决方法

你需要一个中间状态,你已经拥有它.如果从order.sharepoint中删除abstract:true,则无论OrderResolve的解析值如何,都始终转到该状态.

然后,在SharePointController中,您可以访问OrderResolve,并且可以确定目标状态:

// inside SharePointController

if (OrderResolve.hasSharepoint == true){
  $state.go('order.sharepoint.index');
else {
  $state.go('order.sharepoint.setup');
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读