当前位置: 首页 > 知识库问答 >
问题:

AngularJS UI路由器:如何配置嵌套命名视图?

刘高驰
2023-03-14

我的配置如下所示:

...
.state('profiles', {
    abstract: true
    , url : '/profiles'
    , resolve: {...}    
    , views: {
      mainModule: {
        templateUrl : '/partials/home.html'
        , controller : 'HomeCtrl'
      }
      , leftSidePaneModule: {
          templateUrl : '/partials/leftSidePane.html'
          , controller : 'LeftSidePaneCtrl'
      }
    }
  })
...

主玉锉

...
.col-xs-4.col-md-4.chat_block(ui-view='leftSidePaneModule', autoscroll="false")  
...

因此,leftSidePaneModule模块被填充到ui-view='leftSidePaneModule占位符中。但问题是,我在leftSidePaneModule模板中有2个命名的视图。

leftSidePaneModule。html

<div>
  <div ui-view="leftWidgetOne"></div>
  <div ui-view="leftWidgetTwo"></div>
</div>

如何制作模块leftWidgetOne

我试过了,

...
.state('profiles', {
    abstract: true
    , url : '/profiles'
    , resolve: {...}    
    , views: {
      mainModule: {
        templateUrl : '/partials/home.html'
        , controller : 'HomeCtrl'
      }
      , leftSidePaneModule: {
          templateUrl : '/partials/leftSidePane.html'
          , controller : 'LeftSidePaneCtrl'
      }
      , 'leftWidgetOne@leftSidePaneModule' : {...}
      , 'leftWidgetTwo@leftSidePaneModule' : {...}
    }
  })
...

尝试: 2

...
.state('profiles', {
    abstract: true
    , url : '/profiles'
    , resolve: {...}    
    , views: {
      mainModule: {
        templateUrl : '/partials/home.html'
        , controller : 'HomeCtrl'
      }
      , leftSidePaneModule: {
          templateUrl : '/partials/leftSidePane.html'
          , controller : 'LeftSidePaneCtrl'
          , views: {
             'leftWidgetOne' : {...}
             , 'leftWidgetTwo' : {...}
          }
      }
    }
  })
...

两者都不起作用。

你是怎么做到的?

谢谢

共有1个答案

袁开宇
2023-03-14

可以在这里找到解决方案:视图名称-相对名称与绝对名称。引用:

在幕后,每个视图都会被分配一个绝对名称,该名称遵循viewname@statename,其中viewnameview指令中使用的名称,state name是州的绝对名称,例如联系人。项目(注意:在我们的例子中,它必须是“profiles”)。

关键是,我们可以使用视图的完整(绝对)名称,作为当前状态定义的一部分:

$stateProvider
    .state('profiles', {
        url: '/profiles',
        views: {
            mainModule: {
                template: '<div>' +
                          '  <h1>Main</h1>' +
                          '  <div ui-view="leftSidePaneModule"></div>' +
                          '</div>',
            },
            // here we do target the view just added above, as a 'mainModule'
            // as <div ui-view="leftSidePaneModule">
            'leftSidePaneModule@profiles': {
                template: '<div>' + 
                            '  <div ui-view="leftWidgetOne"></div>' + 
                            '  <div ui-view="leftWidgetTwo"></div>' +
                            '</div>',
            },
            // and here we do target the sub view
            // but still part of the state 'profiles' defined in the above
            // view defintion 'leftSidePaneModule@profiles'
            'leftWidgetOne@profiles': {
                template: '<h2>One</2>',
            },
            'leftWidgetTwo@profiles': {
                template: '<h2>Two</2>',
            },
        }
    });

还有柱塞显示上述代码在行动

 类似资料:
  • 问题内容: 我有如下配置: 玉器主锉 因此,模块将填充到占位符中。但是问题是,我在模板中还有2个命名视图。模板如下所示: leftSidePaneModule.html 如何使模块和在被填充到上述占位? 我试过了, 尝试次数:2 两者都不起作用。 你怎么做呢? 谢谢! 问题答案: 解决方案可在此处找到:视图名称-相对名称与绝对名称。引用: 在幕后,每个视图都被分配一个遵循的方案的绝对名称,其中指令

  • 问题内容: 我有这样的结构: 我希望能够在如下所示的主要状态下定义模板,而不必在子状态下进行管理。 我希望命名的ui视图不是其子状态,并由该状态的views对象而不是子状态的templateUrl字段填充。我怎样才能做到这一点? 问题答案: 我们可以在 一种* 状态下使用 更多 视图,请参阅: * 多个命名视图 该定义只需要使用绝对命名即可: 如此处详细说明: 视图名称-相对名称与绝对名称 在幕后

  • 问题内容: 我正在尝试创建文件查看器,并且想嵌套子目录。我正在使用ui-router,我希望每个子目录都有其自己的URL和状态。 说我有以下结构: 我希望我的路线是: 我想递归地执行此操作,而不是为每个子目录创建一个新状态 问题答案: 我建议用 一种状态 和 一种参数 - 来做。因为应该尽快定义所有状态,以支持url路由。所有这些唯一的folderPath可能不同,也可能是动态的-在运行时中,在应

  • 问题内容: 是否可以在有条件的ui路由器中创建嵌套视图?条件已分配给用户角色。 例如,我有两种类型的用户: admin 和 user 。如果用户正在打开设置页面,则ui路由器仅添加分配给他的角色的该视图。 这是我的配置代码的示例 问题答案: 该视图将为每个用户(管理员或匿名)注入。但是我们可以管理哪个视图。最好的办法是使用 。 根据此问答: $ locationChangeSuccess和$sta

  • 问题内容: 我很难找到有关通过数据库动态使用ui路由器的任何文档。当然,所有内容都经过硬编码。 我的杰森: 我的应用程式: 我很难动态配置视图。有任何想法吗? 更新: 我根据RadimKöhler 的回答做了一个Plunker。感谢您的帮助。 我认为ui-router是defacto路由器,它具有动态性,它将使大型应用程序更易于管理。 问题答案: 有一个显示我们如何动态配置视图的插件。的更新版本如

  • 如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。