One way is to make a global 'root' state. So, each and every state will be it's child.
Like root.pages, root.pages.edit, root.settings, etc.
Then you can provide default templates for header and footer.
Another way, different approach, that I use personally, is to use ng-include
for header and footer.
<body ng-controller="AppCtrl">
<div id="header" ng-include="'header.tpl.html'"></div>
<div class="main_container" ui-view>
</div>
</body>
Btw. I use seperate controller in header.tpl.html, that is a child of main AppCtrl.:
<div id="header" ng-controller="HeaderCtrl"> ....
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…