【发布时间】:2014-12-05 09:39:04
【问题描述】:
我想建立一个具有以下结构的站点 header-view, main-view, footer-view 。 所以我定义了一个包含页眉和页脚的根路由。 root 的子节点将是我的所有站点。在这些站点中,我将有更多的嵌套视图。
在下面的代码中,它确实显示了页眉,但不显示页脚和主视图。一旦我删除父继承,它会显示主视图,但不显示页眉和页脚。
HTML
<body ng-app="App">
<header ui-view="header"></header>
<main ui-view></ui-view>
<footer ui-view="footer"></footer>
</body>
JS
module.config(function($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('root', {
abstract: true,
views: {
'@': {
controller: 'RootCtrl',
controllerAs: 'rootCtrl'
},
'header@': {
templateUrl: 'modules/header/header.html',
controller: 'HeaderCtrl',
controllerAs: 'headerCtrl'
},
'footer@': {
templateUrl: 'modules/footer/footer.html',
controller: 'FooterCtrl',
controllerAs: 'footerCtrl'
}
}
})
.state('root.home',{
parent:'root',
url:'',
templateUrl:'modules/home/home.html',
controller: 'HomeController',
controllerAs:'homeCtrl'
});
});
【问题讨论】:
-
你能创建原始的工作 jsfiddle/plunkr,所以我们可以玩。?乍一看,我会删除'abstract:true'和'parent:root',因为它已经通过路径定义完成,接下来为页眉和页脚指定@root。无论如何样本更好
-
最后一句话没看懂。这是一个 plunkr:embed.plnkr.co/0U5vQxhrjlYPhkRPZ1mI/preview
-
不知道能不能链上stateprovider。我猜你必须在每个 .state 之前插入 $stateProvider 但这仍然没有改变任何东西。
标签: angularjs angular-ui-router