案例
<! DOCTYPE html > < html lang ="en" ng-app ="myApp" > < head > < meta charset ="UTF-8" > < title > Title </ title > < link rel ="stylesheet" href ='node_modules/bootstrap/dist/css/bootstrap.css' > < link rel ="stylesheet" href ='node_modules/angular-ui-bootstrap/dist/ui-bootstrap-csp.css' > < script src ="node_modules/angular/angular.min.js" ></ script > < script src ="node_modules/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js" ></ script > < style type ="text/css" > form.tab-form-demo .tab-pane { margin : 20px 20px ; } </ style > < script > angular.module( ' myApp ' ,[ ' ui.bootstrap ' ]) .controller( ' TabsDemoCtrl ' , function ($scope, uibDateParser) { $scope.tabs = [ { title: ' Dynamic Title 1 ' , content: ' Dynamic content 1 ' }, { title: ' Dynamic Title 2 ' , content: ' Dynamic content 2 ' , disabled: true } ]; $scope.alertMe = function () { setTimeout( function () { $window.alert( ' You\'ve selected the alert tab! ' ); }); }; $scope.model = { name: ' Tabs ' }; }); </ script > </ head > < body > < div ng-controller ="TabsDemoCtrl" > < p > Select a tab by setting active binding to true: </ p > < p > < button type ="button" class ="btn btn-default btn-sm" ng-click ="active = 1" > Select second tab </ button > < button type ="button" class ="btn btn-default btn-sm" ng-click ="active = 2" > Select third tab </ button > </ p > < p > < button type ="button" class ="btn btn-default btn-sm" ng-click ="tabs[1].disabled = ! tabs[1].disabled" > Enable / Disable third tab </ button > </ p > < hr /> < uib-tabset active ="active" > < uib-tab index ="0" heading ="Static title" > Static content </ uib-tab > < uib-tab index ="$index + 1" ng-repeat ="tab in tabs" heading ="{{tab.title}}" disable ="tab.disabled" > {{tab.content}} </ uib-tab > < uib-tab index ="3" select ="alertMe()" > < uib-tab-heading > < i class ="glyphicon glyphicon-bell" ></ i > Alert! </ uib-tab-heading > I've got an HTML heading, and a select callback. Pretty cool! </ uib-tab > </ uib-tabset > < hr /> < uib-tabset active ="activePill" vertical ="true" type ="pills" > < uib-tab index ="0" heading ="Vertical 1" > Vertical content 1 </ uib-tab > < uib-tab index ="1" heading ="Vertical 2" > Vertical content 2 </ uib-tab > </ uib-tabset > < hr /> < uib-tabset active ="activeJustified" justified ="true" > < uib-tab index ="0" heading ="Justified" > Justified content </ uib-tab > < uib-tab index ="1" heading ="SJ" > Short Labeled Justified content </ uib-tab > < uib-tab index ="2" heading ="Long Justified" > Long Labeled Justified content </ uib-tab > </ uib-tabset > < hr /> Tabbed pills with CSS classes < uib-tabset type ="pills" > < uib-tab heading ="Default Size" > Tab 1 content </ uib-tab > < uib-tab heading ="Small Button" classes ="btn-sm" > Tab 2 content </ uib-tab > </ uib-tabset > < hr /> Tabs using nested forms: < form name ="outerForm" class ="tab-form-demo" > < uib-tabset active ="activeForm" > < uib-tab index ="0" heading ="Form Tab" > < ng-form name ="nestedForm" > < div class ="form-group" > < label > Name </ label > < input type ="text" class ="form-control" required ng-model ="model.name" /> </ div > </ ng-form > </ uib-tab > < uib-tab index ="1" heading ="Tab One" > Some Tab Content </ uib-tab > < uib-tab index ="2" heading ="Tab Two" > More Tab Content </ uib-tab > </ uib-tabset > </ form > Model: < pre > {{ model | json }} </ pre > Nested Form: < pre > {{ outerForm.nestedForm | json }} </ pre > </ div > </ body > </ html >
效果
uib-tabset 配置
active (Default: Index of first tab ) - 选项卡索引。设置这个现有选项卡的标签索引。
< button type ="button" class ="btn btn-default btn-sm" ng-click ="uibTabDemo = 1" > 点击后切换到two </ button > < uib-tabset active ="uibTabDemo" > < uib-tab index ="0" heading ="one" > one </ uib-tab > < uib-tab index ="1" heading ="two" > two </ uib-tab > </ uib-tabset >
justified $ (Default: false ) -标签填补容器的宽度受否一致。
< uib-tabset active ="activeJustified" justified ="true" > < uib-tab index ="0" heading ="Justified" > Justified content </ uib-tab > < uib-tab index ="1" heading ="SJ" > Short Labeled Justified content </ uib-tab > < uib-tab index ="2" heading ="Long Justified" > Long Labeled Justified content </ uib-tab > < uib-tab index ="3" heading ="Long " > Long Labeled content </ uib-tab > < uib-tab index ="4" heading ="Justified" > Justified content </ uib-tab > </ uib-tabset >
< uib-tabset active ="activeJustified" justified ="false" > < uib-tab index ="0" heading ="Justified" > Justified content </ uib-tab > < uib-tab index ="1" heading ="SJ" > Short Labeled Justified content </ uib-tab > < uib-tab index ="2" heading ="Long Justified" > Long Labeled Justified content </ uib-tab > < uib-tab index ="3" heading ="Long " > Long Labeled content </ uib-tab > < uib-tab index ="4" heading ="Justified" > Justified content </ uib-tab > </ uib-tabset >
template-url (Default: uib/template/tabs/tabset.html ) - 一个URL代表组件使用的模板位置。
type (Defaults: tabs ) - 导航类型。可能的值是“tabs”和“ pills ”。以下是pills类型
< uib-tabset type ="pills" > < uib-tab heading ="Default Size" > Tab 1 content </ uib-tab > < uib-tab heading ="Small Button" classes ="btn-sm" > Tab 2 content </ uib-tab > </ uib-tabset >
vertical $ (Default: false ) - 标签是否垂直堆叠显示(最好设置type为pills,因为ui-bootstrap并没有对对垂直显示做样式调整)。
< uib-tabset active ="activePill" vertical ="true" type ="pills" > < uib-tab index ="0" heading ="Vertical 1" > Vertical content 1 </ uib-tab > < uib-tab index ="1" heading ="Vertical 2" > Vertical content 2 </ uib-tab > </ uib-tabset >
uib-tab 配置
classes $ - 一个可选的字符串,内容为空格分隔的CSS类.这个类是作用到标签上的,而不是内容上的
Tabbed pills with CSS classes < uib-tabset type ="pills" > < uib-tab heading ="Default Size" > Tab 1 content </ uib-tab > < uib-tab heading ="Small Button" classes ="btn-sm" > Tab 2 content </ uib-tab > </ uib-tabset >
deselect() $ - 当标签被激活时,一个可选的表达式
disable $ (Default: false ) - 禁用选项卡
heading - 标题文本
< uib-tabset > < uib-tab index ="0" heading ="one" > one </ uib-tab > < uib-tab index ="1" heading ="two" > two </ uib-tab > </ uib-tabset >
index - 标签索引。必须是唯一的数字或字符串。
select() $ - 一个可选的表达式,当标签被激活时触发。
$scope.tabs = [ { title: 'Dynamic Title 1', content:'Dynamic content 1' }, { title: 'Dynamic Title 2', content:'Dynamic content 2', disabled: true } ]; $scope.alertMe = function () { console.log( 'demo' ) };
template-url (Default: uib/template/tabs/tab.html ) - 一个URL的位置代表使用选项卡标题的模板。
Tabset heading
如果使用uib-tabset字符串标题无法满足需求,您也可以使用一个uib-tab-heading元素。也可以使用HTML。
< uib-tabset active ="active" > < uib-tab index ="0" heading ="Static title" > Static content </ uib-tab > < uib-tab index ="1" select ="alertMe()" > < uib-tab-heading > < i class ="glyphicon glyphicon-bell" ></ i > Alert! </ uib-tab-heading > I've got an HTML heading, and a select callback. Pretty cool! </ uib-tab > </ uib-tabset >
已知的问题
要在标签中使用可点击元素(例如a标签),你必须改为使用div元素,而不是a元素,并设置相应的样式。
查看更多关于angular-ui-bootstrap插件API - Tabs的详细内容...