Edit: Lol. I just saw that I was 10 months late.
I just ran into what you are talking about. If you dynamically present content on each tab using ng-repeat , this avoids the need to redo the sidebar several times.
<div class="tabWrapper"> <uib-tabset> <uib-tab index="$index + 1" ng-repeat="tab in tabs" heading="{{tab.title}}" disable="tab.disabled"> <div class="sidePanel">{{tab.sidepanel}}</div> <div class="tabContent">{{tab.content}}</div> </uib-tab> </uib-tabset> </div>
You would not need a mess with absolute positioning:
.sidePanel { float: left; width: 20%; height: 10em; border: 1px solid black; border-top: none; }
OR, if you are using angular-ui-router , you can execute a static sidebar using abstract states.
config.js
$stateProvider .state('root.tabs', { abstract: true, controller: 'TabsCtrl as vm', templateUrl: 'templates/app-layout/tabs.tpl.html' }) .state('root.tabs.view', { url: '/tabsview', templateUrl: 'templates/app-layout/sidepanel.tpl.html' });
tabs.tpl.html
<div> <uib-tabset> <uib-tab index="$index + 1" ng-repeat="tab in tabs" heading="{{tab.title}}" disable="tab.disabled"> <div class="sidePanelContainer" ui-view></div> <div class="tabContent">{{tab.content}}</div> </uib-tab> </uib-tabset> </div>
sidepanel.tpl.html
<div class="sidePanel"> <input type="text" value="1234"> <input type="text" value="4321"> </div>
See also: What is the purpose of using an abstract state?
Hope this helps
Wes aspinall
source share