Angularjs嵌套路由器不起作用

时间:2014-05-28 08:55:54

标签: javascript angularjs

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

以下'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'
});
无论如何,我有解决方法吗?

2 个答案:

答案 0 :(得分:0)

试试这个

.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'
});

答案 1 :(得分:0)

最后,我发现以下内容可行:

.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'
});

感谢所有人回答我。