在angularjs项目中,我使用uib-tabset指令来显示选项卡。我想显示所有标签共有的左侧面板。所以我必须在uib-tabset指令之前或之后添加一个div。
使用uib-tabsets,生成的结构如下:
<panel>
<tabs-headings>
<tabs-bodies>
使用这种结构,我找到的唯一方法是编辑css并使用位置属性(左/上)进行播放,以便在侧面板顶部移动标题,但我发现这有风险。 另一种方法是复制每个标签内的面板代码,但我发现这也很糟糕。
相反,我想生成这个,所以创建css会更容易:
<tabs-heading>
<panel>
<tabs-bodies>
有没有简单的方法来实现这种行为?
由于
答案 0 :(得分:0)
编辑:哈哈。刚看到我迟到了10个月。
我刚刚遇到你正在谈论的事情。如果您使用ng-repeat
在每个标签中动态呈现内容,则可以避免多次重新制作侧面板。
<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>
你也不需要捣乱绝对定位:
.sidePanel {
float: left;
width: 20%;
height: 10em;
border: 1px solid black;
border-top: none;
}
OR ,如果您正在使用angular-ui-router
,则可以使用抽象状态来完成静态侧面板。
<强> 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>
另见: what is the purpose of use abstract state?
希望这有帮助