Angularjs的嵌套路由器不起作用

Angularjs nested router does not work

本文关键字:不起作用 路由器 嵌套 Angularjs      更新时间:2023-09-26

我正在研究角路由,使用嵌套路由时遇到一些问题:

下面的'abc'状态对route/admin/team/:teamId完全有效

.state('admin', {
    url: '/admin',
    controller: 'AdminController',
    templateUrl: '/views/admin/index.html'
})
.state('admin.home', {
    url: '/home',
    parent: 'admin',
    templateUrl: '/views/admin/dashboard.html'
})
.state('admin.team', {
    url: '/team',
    parent: 'admin',
    controller: 'TeamController',
    templateUrl: '/views/admin/team/index.html'
})
.state('abc', {
    url: '/admin/team/:teamId',
    // parent: 'admin.team',
    controller: function($scope, $stateParams){
        console.info('$stateParams.teamId', $stateParams.teamId);
    },
    templateUrl: '/views/admin/player/index.html'
});

但如果我将状态'abc'替换为以下内容,则玩家模板不会呈现并保留admin/team/index.html,甚至没有控制台输出,例如:

.state('admin.team.details', {
    url: '/:teamId',
    parent: 'admin.team',
    controller: function($scope, $stateParams){
        console.info('$stateParams.teamId', $stateParams.teamId);
    },
    templateUrl: '/views/admin/player/index.html'
});

有办法让我解决它吗?

试试这个

.state('admin.team.details', {
    url: '/details/:teamId',
    parent: 'admin.team',
    controller: function($scope, $stateParams){
        console.info('$stateParams.teamId', $stateParams.teamId);
    },
    templateUrl: '/views/admin/player/index.html'
});

最后,我找到了以下方法:

.state('admin.team', {
    url: '/team',
    parent: 'admin',
    controller: 'TeamController',
    templateUrl: '/views/admin/team/index.html'
})
.state('admin.team.details', {
    url: '/team/:teamId',
    parent: 'admin',
    controller: 'PlayerController',
    templateUrl: '/views/admin/player/index.html'
});

谢谢你回答我。