0

我正在使用 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 而不是 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/92 [作品]

/company/92/user [没办法]

我应该怎么做才能使这项工作与动态参数一起工作?

4

1 回答 1

0

我还没有解决这个问题,但解决了它:

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

我必须在每个 url 中指定一个 id

于 2013-12-03T16:04:51.060 回答