When it comes to ui.router modules, I can imagine three different ways to set a default header and footer for each view:
DEFAULT HEADER <CONTENT> DEFAULT FOOTER
1. ng-include - attach your header / footer to the original .html file (index.html).
<html> <div ng-include src="'header.html'"></div> <div id="content" ui-view></div>
1.1. Paste code in index.html
<html> <div></div> <div id="content" ui-view></div>
2. Using directives to parse the header and footer.
home.html
<footer></footer>
footerDirective.js
module.directive('footer', function () { return { restrict: 'E', replace: true, templateUrl: "footer.html", controller: ['$scope', '$filter', function ($scope, $filter) { }] } });
http://gon.to/2013/03/23/the-right-way-of-coding-angularjs-how-to-organize-a-regular-webapp/
3. Creating an extra state on ui.router without a url.
The state wrapper will then contain the header and footer and will not be called.
$stateProvider .state('wrapper', { templateUrl: 'wrapper.html', // contains html of header and footer controller: 'WrapperCtrl' }) .state('wrapper.home', { url: '/', templateUrl: 'home.html', controller: 'HomeCtrl' });
Which one is preferable? Or is there a more desirable way to do this with Angular 1.x?
source share