Angular 1.5.11 - ui路由器在升级后在init上找不到状态

时间:2017-10-16 13:41:58

标签: angularjs angular-ui-router

跑步角1.15.11

在我们的应用程序中将ui路由器从0.3.1更新到1.0.8时,似乎没有从url中识别出状态。

StateService.current {
    name: "",
    url: "^"
}

我们所有的州都在$ state.router.stateRegistry.states注册,我们还使用$ urlRouterProvider.otherwise('/')配置了一个备用网址;

index.html中的

<div id="app" ui-view="main"></div>

在public-main.tpl.html

<ui-view></ui-view>

在private-main.tpl.html

<div ui-view="mobileHeader"></div>
<div ui-view="sidebar"></div>
<div id="frame">
    <ui-view></ui-view>
</div>
<div ui-view="activityFeed"></div>
<div class="page-busy" ng-hide="!loading">
    <img src="assets/images/loading-bubbles-dark.svg">
</div>

我们有一个抽象的公共和私人州。

.state('public', {
    abstract: true,
    views: {
        'main': {
            templateUrl: 'app/states/abstracts/public-main.tpl.html'
        }
    },
    data: {
        access: {
            isPrivate: false
        }
    }
})
.state('private', {
     abstract: true,
     views: {
        'main': {
            templateUrl: 'app/states/abstracts/private-main.tpl.html',
            controller: 'privateMainController'
        },
        'sidebar@private': {
            templateUrl: 'app/states/abstracts/sidebar.tpl.html',
            controller: 'sidebarController'
        },
        'activityFeed@private': {
             templateUrl: 'app/states/abstracts/activity-feed.tpl.html',
             controller: 'activityFeedController'
        },
        'mobileHeader@private': {
             templateUrl: 'app/states/abstracts/mobile-header.tpl.html',
             controller: 'mobileHeaderController'
        }
    },
    data: {
        access: {
           isPrivate: true
        }
    },
    resolve: {
        ...some resolves
    }
})

我们的私有根状态,我们的仪表板声明如下:

$stateProvider.state('private.dashboard', {
        url: '/',
        controller: 'DashboardController',
        templateUrl: 'app/states/dashboard/dashboard.tpl.html'
})

如果state.go('public.login')或$ state.go('private.dashboard')在主控制器中被硬编码,则状态正常,启动对'onStateChange'函数的isLoggedIn和其他内容的检查。我知道'onStateChange'和其他人不赞成转换事件,但是使用$ stateEvents.provider.enabled()重新启用它们并且工作正常。

在更新ui-router之前,应用程序根据浏览器中提供的url在init上找到匹配状态,触发onStateChange检查登录等。现在没有找到状态且没有应用视图。

有人知道这是否已经改变或如何启用它?

0 个答案:

没有答案