angular-ui-router中的三级嵌套路由

时间:2013-05-29 19:45:14

标签: angularjs angular-ui

我试图让我的嵌套路线工作,但现在给我两天的困难时间:(

一个级别正常

两个级别正常

三个级别无效!

任何人都可以帮帮我吗?

提前致谢

angular.module('settings', []).config(['$stateProvider', '$routeProvider', '$urlRouterProvider', function($stateProvider, $routeProvider, $urlRouterProvider) {
    $stateProvider
        .state('settings', {
            url: '/settings',
           template:"Settings",
            controller: function(){
                console.log('settings');
            }
        }).
        state('settings.branch', {
            url: '/{branchId:[0-9]{1,8}}',
            template:"Branch",
            controller: function(){
                console.log('branch');
            }
        }).
        state('settings.branch.prop', {
            url: '/prop',
            template:"Property",
            controller: function(){
                console.log('property');
            }
        });
}]);

'/ settings'正在运作

'/ settings / 1234'正在运作

'/ settings / 1234 / prop'不起作用,总是返回普遍状态'Branch'

4 个答案:

答案 0 :(得分:12)

我猜你没有在分支模板

中声明一个ui-view

答案 1 :(得分:1)

我有同样的问题。对于settings.branch.prop,请尝试将url设置为:

url: '/{branchId:[0-9]{1,8}}/prop'

答案 2 :(得分:0)

我们遇到了类似的问题。刚刚找到一个解决方案(不是很漂亮的想法)

所以我们有

/b2c/applicationShow --> applicationShowController (b2c.applicationShow) with an /:id 

/b2c/applicationShow/9238490392084/details --> detailsController (b2c.applicationShow.details) 

/b2c/applicationShow/9238490392084/details/someApp --> someAppController (b2c.applicationShow.details.someApp) 

/b2c/applicationShow/9238490392084/details/someApp/someTab --> this has no controller, only declare the previous one as parent. 

那么我们是如何从/ b2c / applicationShow转发的呢? / b2c / applicationShow / 9238490392084 / details / someApp / someTab(有一个列出所有应用程序的表,然后单击一个链接,假设将您带到该特定选项卡)

我们一个接一个地转发它们。

$state.go(b2c.applicationShow , {id: 9238490392084})

然后在detailsController

$state.go(b2c.applicationShow.details.someApp); 

然后在someAppController

$stage.go(b2c.applicationShow.details.someApp, {tab: someTab});

基本上状态机将采用最后一条路径,然后追加,然后继续。好吧,就像我说的那样,它并不漂亮,但完成了工作。希望能帮助到你。

答案 3 :(得分:0)

尝试使用属性ui-view围绕分支视图内容包装div,如此,

 <div ui-view> 
     branch content goes here .....
     ......

 </div>

为我做了诀窍!