Angular UI路由器嵌套视图
Angular UI router nested views
我有一个这样的结构:
<div ui-view="main">
<!-- content populated here by AngularJS ui-router -->
<aside ui-view="sidebar">
<!-- content populated here by AngularJS ui-router -->
</aside>
</div>
我希望能够像下面这样在主状态下定义模板,而不必在子状态下管理它。
.state('state1', {
url: '/',
views: {
'main': {
templateUrl: '/modules/blog/partials/index.html',
controller: 'BlogController'
},
'sidebar': {
templateUrl: '/modules/core/partials/sidebar.html'
}
}
});
我希望名为sidebar
的ui视图不是main
的子状态,而是由main
状态的视图对象填充,而不是由子状态的templateUrl字段填充。我该怎么做?
我们可以在一个状态中使用更多视图,请参阅:
- 多个命名视图
定义只需要使用绝对命名:
.state('state1', {
url: '/',
views: {
'main': {
templateUrl: '/modules/blog/partials/index.html',
controller: 'BlogController'
},
// instead of
// 'sidebar': {
// we need
'sidebar@state1': {
templateUrl: '/modules/core/partials/sidebar.html'
}
}
});
如这里详细解释的:
- 视图名称-相对名称与绝对名称
在幕后,每个视图都会被分配一个绝对名称,该名称遵循
viewname@statename
的方案,其中viewname是视图指令中使用的名称,state name是状态的绝对名称,例如contact.item。您还可以选择用绝对语法编写视图名称。
因此,正如上面的片段所示,如果的内容
/modules/blog/partials/index.html
将是:
<div>
<!-- content populated here by AngularJS ui-router -->
<aside ui-view="sidebar">
<!-- content populated here by AngularJS ui-router -->
</aside>
</div>
index.html将包含占位符:
<div ui-view="main" ></div>
然后
'main'
-将在父根目录(index.html)中搜索'sidebar@state1'
将在"state1"(本身)中评估为viewName/target
一个有类似想法的例子,后面有一些layout.html
相关文章:
- angularjs中带有ui路由器的嵌套视图
- 如何加载嵌套3个状态的UI路由器UI视图模板
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 滚动所有嵌套的滚动条,使HTML元素进入视图
- 状态更改期间角度UI路由器中的嵌套视图滞后
- 带有ui.router的带角度的嵌套视图
- Angularjs 中的嵌套视图,每个视图都有单独的控制器
- 挖空.js嵌套视图模型不起作用
- Angular UI Router-在不了解第二级嵌套视图的情况下更改第三级嵌套视图
- EmberJS linkTo嵌套资源正在重新呈现父视图
- 创建表时在marionete.js中嵌套视图
- Angular 1.3+ui路由器+生成器ng poly嵌入嵌套(?)视图不起作用
- 与AngularJs中的嵌套视图相关
- MarionetteJS嵌套视图
- 嵌套的主干视图未添加到DOM中
- 嵌套状态的多个视图
- Ember.js-隐藏嵌套资源中的父视图
- AngularJS将ui视图嵌套到ng repeat中
- 将创建视图嵌套在Backbone.js中的显示视图中
- 主干视图嵌套