<!DOCTYPE html>
<html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" rel="stylesheet" data-semver="3.3.6" data-require="bootstrap-css@3.3.6" />
<link data-require="fontawesome@4.5.0" data-semver="4.5.0" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css" />
<script data-require="angular.js@1.4.8" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.js" data-semver="2.1.4" data-require="jquery@*"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" data-semver="3.3.6" data-require="bootstrap@3.3.6"></script>
<link href="style.css" rel="stylesheet" />
<script src="script.js"></script>
</head>
<body ng-app="app">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Simple wizard in AngularJS and Bootstrap</h1>
<div id="wizard-container" ng-controller="WizardController as vm">
<div id="wizard-step-container">
<ul class="nav nav-pills nav-justified">
<li ng-repeat="step in vm.steps" ng-class="{'active':step.step == vm.currentStep}"><a ng-click="vm.gotoStep(step.step)" href="">{{step.step}}. {{step.name}}</a></li>
</ul>
</div>
<div id="wizard-content-container">
<ng-include src="vm.getStepTemplate()"></ng-include>
</div>
<div id="wizard-navigation-container">
<div class="pull-right">
<span class="btn-group">
<button ng-disabled="vm.currentStep <= 1" class="btn btn-default" name="previous" type="button" ng-click="vm.gotoStep(vm.currentStep - 1)"><i class="fa fa-arrow-left"></i> Previous step</button>
<button ng-disabled="vm.currentStep >= vm.steps.length" class="btn btn-primary" name="next" type="button" ng-click="vm.gotoStep(vm.currentStep + 1)">Next step <i class="fa fa-arrow-right"></i></button>
</span>
<button ng-disabled="vm.currentStep != vm.steps.length" class="btn btn-success" name="next" type="button" ng-click="vm.save()"> <i class="fa fa-floppy-o"></i> Save</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
(function () {
angular.module('app', []);
angular.module('app').controller("WizardController", [wizardController]);
function wizardController() {
var vm = this;
//Model
vm.currentStep = 1;
vm.steps = [
{
step: 1,
name: "First step",
template: "step1.html"
},
{
step: 2,
name: "Second step",
template: "step2.html"
},
{
step: 3,
name: "Third step",
template: "step3.html"
},
];
vm.user = {};
//Functions
vm.gotoStep = function(newStep) {
vm.currentStep = newStep;
}
vm.getStepTemplate = function(){
for (var i = 0; i < vm.steps.length; i++) {
if (vm.currentStep == vm.steps[i].step) {
return vm.steps[i].template;
}
}
}
vm.save = function() {
alert(
"Saving form... \n\n" +
"Name: " + vm.user.name + "\n" +
"Email: " + vm.user.email + "\n" +
"Age: " + vm.user.age);
}
}
})();
#wizard-step-container {
margin: 20px 0;
}
#wizard-content-container {
margin: 20px 0;
}
#wizard-navigation-container {
border-top: 1px solid #eee;
margin: 20px 0;
padding-top: 20px;
}
<h2>Step1 content</h2>
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name" ng-model="vm.user.name" required />
</div>
<h2>Step1 content</h2>
<div class="form-group">
<label>Email</label>
<input type="email" class="form-control" name="email" ng-model="vm.user.email" required />
</div>
<h2>Step1 content</h2>
<div class="form-group">
<label>Age</label>
<input type="number" class="form-control" name="age" ng-model="vm.user.age" required />
</div>