我正在将现有的角度应用程序升级到所有最新版本的angular(v1.2.13),ui-router(v0.2.8)和ui-bootstrap(v0.10.0)。
我有嵌套的视图,它有多个命名视图。其中一个命名视图中包含选项卡。我曾经能够在每个标签中设置ui-views
,但不再有效。如果我不使用选项卡,则命名视图会正确呈现。
我创建了plunkr to show what I'm seeing.
这是我的状态configuraiton。 _split.html
有3个已命名的观看次数:TOP
,MIDDLE
和BOTTOM
。 TOP
和MIDDLE
都指定了观看次数LEFT
和RIGHT
。 TOP
包含标签,但不会呈现观看次数LEFT
或RIGHT
。 MIDDLE
具有相同的命名视图,并且可以正确呈现。
$stateProvider
.state("foo", {
abstract: true,
url: "/foo",
templateUrl: '_split.html',
})
.state("foo.view", {
abstract: true,
url: '',
views: {
'TOP': {
template: '_tabs.html'
},
'MIDDLE': {
templateUrl: '_tabs2.html'
},
'BOTTOM': {
template: '<h2>Bottom</h2>'
}
},
})
.state("foo.view.tabs", {
url: '',
views: {
'LEFT': {
template: '<h3>Left</h3>'
},
'RIGHT': {
template: '<h3>Right</h3>'
}
}
})
有没有办法在标签中呈现ui-view?
答案 0 :(得分:9)
是的,你可以在标签内渲染ui-views。诀窍是在ui-sref
中使用<tab-heading>
来控制状态/路线更改,并使ui-view
低于</tabset>
。我确定还有其他方法,但这就是我如何使用ui-router制作标签。
修改更新
高于原始建议是错误的,ui-sref
应该在<tab>
提示chris-t以获得正确的配置。
使用多个视图演示http://plnkr.co/edit/gXnFS3?p=preview
的index.html
<tabset>
<tab ui-sref="left">
<tab-heading style="cursor:pointer;">
<a ui-sref-active="active">Left</a>
</tab-heading>
</tab>
<tab ui-sref="right">
<tab-heading style="cursor:pointer;">
<a ui-sref-active="active">Right</a>
</tab-heading>
</tab>
</tabset>
<div class="row">
<br>
<div class="col-xs-4">
<div class="well" ui-view="viewA">
<!--Here is the A content-->
</div>
</div>
<div class="col-xs-4">
<div class="well" ui-view="viewB">
<!--Here is the B content-->
</div>
</div>
</div>
app.js(ui-router config)
$stateProvider
.state('left', {
url: "/",
views: {
"viewA": {
template: "Left Tab, index.viewA"
},
"viewB": {
template: 'Left Tab, index.viewB<br><a ui-sref=".list">Show List</a>' +
'<div ui-view="viewB.list"></div>'
},
"viewC": {
template: 'Left Tab, index.viewC <div ui-view="viewC.list"></div>'
}
}
})
.state('left.list', {
url: 'list',
views: {
"viewB.list": {
template: '<h2>Nest list viewB</h2><ul>' +
'<li ng-repeat="thing in tab1things">{{thing}}</li></ul>',
controller: 'Tab1ViewBCtrl',
data: {}
},
"viewC.list": {
template: 'Left Tab, list.viewC'
}
}
})
答案 1 :(得分:3)
设置选项卡标题可启用链接,但如果您单击选项卡但在链接外部,则链接将不会激活。这是我从ui-router得到的回复。感谢Chris T。
<tabset>
<tab ui-sref="user.list">
<tab-heading><a ui-sref-active="active">Users</a></tab-heading>
</tab>
</tabset>
更新:
由于ui-sref-active,我对这个问题非常喜欢。从ui-router.2.10.2.11 / angular-ui-router.js开始,这被加强以支持继承 - 请参阅stack overflow帖子和ui-router issue 18