Javascript 角度UI路由器嵌套视图问题

Javascript 角度UI路由器嵌套视图问题,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我在探索角度UI路由器嵌套视图的工作方式时遇到了一些问题 我的$stateProvider如下所示: $stateProvider .state('login', { url: "/login", views: { 'main': { templateUrl: "static/templates/login.html", controller: 'LoginCtrl' } } }) .state('dashboard', { u

我在探索角度UI路由器嵌套视图的工作方式时遇到了一些问题

我的$stateProvider如下所示:

$stateProvider
.state('login', {
  url: "/login",
  views: {
    'main': {
        templateUrl: "static/templates/login.html",
        controller: 'LoginCtrl'
    }
  }
})
.state('dashboard', {
    url: "/dashboard",
    controller: 'DashboardCtrl',
    views: {
        'main': {
            templateUrl: "static/templates/dashboard.html",
        },
        'content' : {
            templateUrl: 'static/templates/partials/dashboard-content.html',
            controller: 'DashboardContentCtrl'
        }
    }
});
我的目标是动态加载“dashboard.html”模板(这很有效)。但在此之后,用“dashboard content.html”填充“content”ui视图

dashboard.html

<div class="span3">
   <!-- A bunch of plain html -->
</div>
<div class="span9" ui-view='content'></div>


我的索引文件(加载整个应用程序)有一个名为“main”的用户界面视图,看起来工作正常。我需要它来工作,因为“dashboard content.html”包含的菜单项需要在登录站点中可用。只有“内容”ui视图中的项目将发生显著更改。其他任何东西都会有一些简单的东西,比如应用于链接的“活动”类。

只需在第二个视图def中使用绝对命名:

// instead fo this
// 'content' : {
// use this
'content@dashboard' : {
    templateUrl: 'static/templates/partials/dashboard-content.html',
    controller: 'DashboardContentCtrl'
}
文档参考(以及其中的一个小引用):

在幕后,每个视图都会被分配一个绝对名称,该名称遵循
viewname@statename
,其中viewname是view指令中使用的名称,state name是州的绝对名称,例如contact.item。您还可以选择以绝对语法编写视图名称

例如,前面的示例也可以写成:

.state('report',{
    views: {
      'filters@': { },
      'tabledata@': { },
      'graph@': { }
    }
})
您还可以检查此项以了解更多解释和工作原理

  • (有关嵌套的一些详细信息)

看一看不完全相同的问题,但这个链接有一些非常好的例子。不完全是我要找的,但仍然很有用。