Ldo*_*pea 7 html css angularjs angular-ui-tabset
在angularjs项目中,我使用uib-tabset指令来显示选项卡.我想显示所有标签共有的左侧面板.所以我必须在uib-tabset指令之前或之后添加一个div.
使用uib-tabsets,生成的结构如下所示:
<panel>
<tabs-headings>
<tabs-bodies>
Run Code Online (Sandbox Code Playgroud)
使用这种结构,我找到的唯一方法是编辑css并使用位置属性(左/上)进行播放,以便将标题移动到侧面板的顶部,但我发现这有风险.另一种方法是复制每个选项卡内的面板代码,但我发现这也很糟糕.
相反,我想生成这个,所以创建css会更容易:
<tabs-heading>
<panel>
<tabs-bodies>
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来实现这种行为?
谢谢
小智 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>
Run Code Online (Sandbox Code Playgroud)
您也不需要搞乱绝对定位:
.sidePanel {
float: left;
width: 20%;
height: 10em;
border: 1px solid black;
border-top: none;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在使用angular-ui-router,您可以通过使用抽象状态来完成静态侧面板。
配置文件
$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'
});
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
侧面板.tpl.html
<div class="sidePanel">
<input type="text" value="1234">
<input type="text" value="4321">
</div>
Run Code Online (Sandbox Code Playgroud)
另请参阅: 使用抽象状态的目的是什么?
希望这可以帮助