如何在多个视图中设置嵌套视图

时间:2015-04-14 16:03:47

标签: angularjs angular-ui-router nested-views

我有两个命名视图和一个未命名的视图如下:

//department.html
<div class="col-md-2">
        <div ui-view="sideBar"></div>
 </div>

 <div class="col-md-10">

        <div ui-view="content"></div>

        <div ui-view></div>

 </div>

我的路线:

.state('Support', {
    url: '/support',
    views: {
       '': { templateUrl: 'app/components/department/department.html'  },

       'sideBar@Support': {
                           templateUrl: 'app/shared/sideBar/sideBar.html',
                           controller: 'SideBarController'
                          },

        'content@Support':{
                           templateUrl: 'app/components/department/support/partial-support.html',
                           controller: 'SupportController'
                          },

      }        
  })


.state('Support.view', {
  url: '/view',
  template: '<b> Hi there nested!!</b>'
});

我需要什么:

  • localhost/support:这是一个父网址,在该网址中注入两个命名视图(sideBar和content),这对我有用。
  • localhost/support/view:在此路由器中,我想要一个子视图,它将替换content视图或替换两个视图。

问题是:  我无法使嵌套视图正常工作,我做错了什么?

PS:我已经阅读了ui-router doc并看到了其他问题,我找不到任何类似的情况。

1 个答案:

答案 0 :(得分:1)

当没有启用html5Mode时,您的方案正在运行。有a working plunker

我刚刚使用了这些链接:

<a ui-sref="Support">
<a ui-sref="Support.view">

状态是 - 有效。

如果您启用了html5Mode,则还必须配置服务器。但正如this updated plunker所示,即使启用了html5Mode,它也会再次运行

$locationProvider.html5Mode({enabled: true});

检查版本