我有以下路由设置为我的应用程序:嵌套视图
$stateProvider
.state('mac', { // domain.com/mac
url: "/mac",
views: {
'body': {
templateUrl: 'partials/products/mac.body.html'
},
'content': {
templateUrl: 'partials/products/mac.home.html'
}
}
})
.state('mac.design', { // domain.com/mac/design
url: "/design",
views: {
'body': {
templateUrl: 'partials/products/mac.body.html'
},
'content': {
templateUrl: 'partials/products/mac.design.html'
}
}
})
.state('mac.features', { // domain.com/mac/features
url: "/features",
views: {
'body': {
templateUrl: 'partials/products/mac.body.html'
},
'content': {
templateUrl: 'partials/products/mac.features.html'
}
}
})
.state('iphone', { // domain.com/iphone
url: "/iphone",
views: {
'body': {
templateUrl: 'partials/products/iphone.body.html'
},
'content': {
templateUrl: 'partials/products/iphone.home.html'
}
}
})
...
的index.html
样子:
<div ui-view="body"></div>
然后里面mac.body.html
:
<div ng-include="'partials/header.html'"></div>
<div class="view-container">
<div ui-view="content" class="view-frame"></div>
</div>
然后终于里面mac.home.html
:
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h1>Mac</h1>
</div>
</div>
</div>
该body
视图加载罚款与头包括,但内容不...任何想法为什么?
内容文件应该是容易找到,但我想我已经排除了这种可能性的问题,因为如果我更换templateUrl
与template: 'test content'
也没有出现......所以现在看来似乎看不到实际ui-view="content"
另一种方式来看待这个:
.state('home', {
url: "/",
views: {
'layoutFile': {
templateUrl: 'partials/layoutDefault.html'
},
'contentFile': {
templateUrl: 'partials/home/index.html'
}
}
})
所以基本上我可以选择哪些视图显示的内容。但是它是如何让contentFile视图被状态看到,当它嵌套在另一个状态中时,像这样...
那你的第二块代码有什么解决方案?因为它是相同的状态,所以我不会创建像'home.content'这样的嵌套状态,还是我会这样?因为用户无法访问它。 – Cameron 2014-09-19 10:04:50
我不确定你的场景是什么.....也许将内容视图移到身体视图之外,以便它不是身体视图的子节点?你可以让孩子的身体和内容的状态。用户可以访问这些内容,您可以使主页状态为抽象,并使您的着陆页成为家中的孩子。 – 2014-09-19 10:08:44
看看我的修改后的问题。基本上我想为每个MAIN部分(例如Mac,iPhone)加载不同的主体模板,然后为每个子区域加载不同的内容模板。 – Cameron 2014-09-19 10:12:43