ui-router中的嵌套视图

时间:2013-09-26 11:56:06

标签: angularjs angular-ui-router

我正在使用angularjs中的一些嵌套状态,一切顺利,直到URL的一部分是动态的。

这很好用

.state('company', {
            url: "/company",
            templateUrl: 'views/company/index.html'
        })
        .state('company.list', {
            url: "/",
            views: {
                "c_list": {
                  templateUrl: 'views/company/list.html',
                  controller: 'CompanyCtrl'
                }
            }
        })
        .state('company.view', {
            url: "/:company_id",
            views: {
                "c_info": {
                  templateUrl: 'views/company/view.html',
                  controller: 'CompanyCtrl'
                },
                "c_menu": {
                  templateUrl: 'views/company/menu.html',
                  controller: 'MenuCtrl'
                }
            }
        })

但是当谈到扩展company.view时,因为它有一个动态参数,它就会失败。

.state('company.view.user', {
            url: "/user",
            views: {
              "c_nested":{
                templateUrl: 'views/user/index.html',
              }
            }
        })
        .state('company.view.user.list', {
            url: "/",
            views: {
                "u_list": {
                  templateUrl: 'views/user/list.html',
                  controller: 'UserCtrl'
                }
            }
        })

如果我从公司而不是company.view扩展用户,则会显示嵌套视图,但如果我从company.view扩展,则只显示主要内容,而不是嵌套的内容。

对于company / index.html我有:

<div ui-view="c_list"></div>
<div ui-view="c_info"></div>
<div ui-view="c_menu"></div>
<div ui-view="c_nested"></div>

对于user / index.html,我有:

<div ui-view="u_list"></div>
<div ui-view="u_info"></div>
<div ui-view="u_menu"></div>
<div ui-view="u_nested"></div>

假设所有其他html都像

一样简单
<div>hi</div>

我使用的网址是:

/ company [works]

/ company / 92 [作品]

/ company / 92 / user [没办法]

我应该怎样做才能使用动态参数?

1 个答案:

答案 0 :(得分:0)

我还没有解决这个问题,但是围绕它来了:

.state('company.user.view', {
  url: '/{user_id:[0-9]{1,8}}',
  ...
})
.state('company.user.edit', {
  url: '/{user_id:[0-9]{1,8}}/edit',
  ...
})

我必须在每个网址中指定一个ID