<!DOCTYPE html>
<html ng-app="myapp">
<head>
<!-- Bootstrap 3 -->
<script data-require="jquery@2.1.1" data-semver="2.1.1" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link data-require="bootstrap@*" data-semver="3.2.0" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.css" />
<link data-require="bootstrap-css@~3.1.1" data-semver="3.1.1" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" />
<script data-require="bootstrap@*" data-semver="3.2.0" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.js"></script>
<!-- Angular -->
<script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<script src="https://code.angularjs.org/1.2.20/angular-route.js"></script>
<!-- App -->
<script src="app.js"></script>
<script src="UsersService.js"></script>
<script src="HeaderController.js"></script>
<script src="HomeController.js"></script>
<script src="UsersController.js"></script>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#/home">Logo</a>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse" ng-controller="HeaderController as header">
<ul class="nav navbar-nav">
<li ng-class="{ active: header.isActive('/home')}"><a href="#/home">Home</a>
</li>
<li ng-class="{ active: header.isActive('/users')}"><a href="#/users">Users</a>
</li>
</ul>
</div>
</div>
</nav>
<div ng-view class="container-fluid slide"></div>
</body>
</html>
/* Styles go here */
# Basic website example using Bootstrap 3
Demonstrates a simple website with a top navigation using `ngRoute` and `ng-view`.
##AngularJS Features
- Modules:
- ngRoute
- Directives:
- ng-controller (using controller as notation)
- ng-class
- ng-view
##Structure
- There are two sections:
- Homepage, 'Home' section with route: `/` or `/home`.
- Users list, 'Users' seciton with route `/users`. Displays a User list.
#Versions
- 1.0
- Added Bootstrap 3 responsive navigation bar
- Added `isActive(route)` to highlight active section
- Applied [John Papas Guidelines](https://github.com/johnpapa/angular-styleguide) to code
#More Information
You can read a post explaining more details [here](http://bit.ly/ngNewRouter)
/**
* My app module
*/
angular
.module('myapp', [
'ngRoute'
]);
// Routing setup
angular
.module('myapp')
.config(function($routeProvider) {
$routeProvider
.when('/home', {
controller: 'HomeController',
controllerAs: 'home',
templateUrl: 'home.tpl.html'
}).when('/users', {
controller: 'UsersController',
controllerAs: 'users',
templateUrl: 'users.tpl.html'
}).otherwise({
// default page
redirectTo: '/home'
});
});
<h1>Hello {{home.name}}</h1>
<h1>Users</h1>
<table class="table">
<thead>
<tr>
<th>#</th>
<th>Username</th>
<th>Roles</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="user in users.list">
<td>{{$index}}</td>
<td>{{user.username}}</td>
<td>{{user.roles.join(', ')}}</td>
</tr>
</tbody>
</table>
(function() {
'use strict';
/**
* Users Service
*/
angular
.module('myapp')
.factory('UsersService', service);
function service(){
var get = function() {
return [{
username: 'batman',
roles: ['admin', 'user']
}, {
username: 'spiderman',
roles: ['user']
}];
}
return {
get: get
}
}
})();
(function() {
'use strict';
/**
* Users Controller
*/
angular
.module('myapp')
.controller('UsersController', Controller);
Controller.$inject = [
'UsersService'
];
function Controller(UsersService) {
var vm = this;
vm.list = UsersService.get();
}
})();
(function() {
'use strict';
/**
* Home Controller
*/
angular
.module('myapp')
.controller('HomeController', Controller);
function Controller() {
var vm = this;
vm.name = "Plunker";
}
})();
(function() {
'use strict';
/**
* Header Controller
*/
angular
.module('myapp')
.controller('HeaderController', Controller);
Controller.$inject = [
'$location'
];
function Controller($location) {
var vm = this;
vm.isActive = isActive;
function isActive(route){
return route === $location.path();
}
}
})();