Как сделать несколько видов с Angular для поддержки заголовка и боковой панели?
Я использую AngularJS впервые. Я успешно реализовал один ng-view
в моем index.html
страница, которая содержит header.html
шаблон. Так это выглядит ниже
Но сейчас я создаю приборную панель (dashboard.html
). Итак, у меня есть левое боковое меню в дополнение к header.html
так это выглядит так:
Мой index.html похож на это:
<div ng-include="'templates/header.html'"></div>
<div class="main" id="main-no-space" >
<div id="main-page">
<div id="wrapper" class="container">
<div class='container'>
<div ng-view></div>
</div>
</div>
</div>
<div ng-include="'templates/footer.html'">
Мой dashboard.html похож на это:
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<li class="active">
<a ng-href="#/link1">Link 1</a>
</li>
<li>
<a ng-href="#/link2">Link 2</a>
</li>
<li>
<a ng-href="#/link3">Link 3</a>
</li>
</ul>
</div>
2 ответа
Попробуй это:
angular.module('app', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/dashboard', {
templateUrl: 'dashboard.html',
controller: DashboardCtrl
})
.otherwise({
redirectTo: '/dashboard'
});
}]);
function DashboardCtrl() {
}
* {
box-sizing: border-box;
}
#main:after {
content: "";
display: block;
clear: both;
}
#header {
padding: 20px;
border: 1px solid #000;
}
#main {
padding: 20px;
border: 1px solid #000;
}
#sidebar {
padding: 20px;
border: 1px solid #000;
float: left;
width: 20%;
}
#content {
padding: 20px;
border: 1px solid #000;
float: right;
width: 78%;
}
#footer {
padding: 20px;
border: 1px solid #000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.14/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.14/angular-route.js"></script>
<div ng-app="app">
<div ng-include="'header.html'" id="header"></div>
<div class="main" id="main-no-space">
<div id="main-page">
<div id="wrapper" class="container">
<div class="container">
<div ng-view id="main">loading...</div>
</div>
</div>
</div>
<div ng-include="'footer.html'" id="footer"></div>
</div>
<script type="text/ng-template" id="dashboard.html">
<div ng-include="'sidebar.html'" id="sidebar"></div>
<div id="content">dashboard</div>
</script>
<script type="text/ng-template" id="header.html">
header
</script>
<script type="text/ng-template" id="sidebar.html">
sidebar
</script>
<script type="text/ng-template" id="footer.html">
footer
</script>
</div>
JSFiddle http://jsfiddle.net/mcVfK/928/
Одним из вариантов было бы посмотреть на ui-router, так как он позволяет вам легко выполнять такую настройку.
Второй вариант - создать элемент управления leftNav отдельно от панели мониторинга, а затем включить его в index.html. Показать и скрыть его в зависимости от активного представления.
Смотрите один из моих старых ответов. Разбейте SPA на несколько компонентов и используйте AngularJS.