AngularJS router-ui resolve exception



我的应用程序中有以下父路由:

        .state('app',{
            url: '/app',
            templateUrl: 'views/app.html',
            resolve: loadSequence('modernizr','moment'),
            abstract: true,
            css:['assets/css/theme-1.css'],
            resolve: {
                loginRequired: loginRequired
            }
        })

解析在父节点设置,因此所有子节点将继承loginRequired。我如何设置一个异常,从父母的孩子之一,其中loginRequired可以被忽略。以下是我的子路由。

.state('app.passwordreset',{
                url: '/app/reset/:token',
                templateUrl: 'views/app_resetpass.html',
                resolve: loadSequence('modernizr','moment','resetCtrl'),
                css:['assets/css/theme-1.css']
            })

谢谢! !

可以做到这一点的一种方法是插入一个只负责登录解析的中间状态。例如:

.state('app', { ... })
.state('app.restricted', {
    abstract: true,
    url: '',
    template: '<div ui-view=""></div>',
    resolve: {
        loginRequired: loginRequired
    }
})
.state('app.restricted.somechild', { ... })
.state('app.passwordreset', { ... });

这样,任何需要身份验证的子节点只需要在状态名之前插入app.restricted。您从本质上将解析需求与app父状态解耦,使其能够在必要时应用。

最新更新