实现类似于浏览器的tab页功能
引入库文件
<script src="ui-tabs.js">
添加模块依赖
angular.module('myModule', ['ui.tabs'])
该服务用于打开,关闭,刷新,激活tab页
用于打开一个tab页,所打开的controller中,可以注入uiTabsParams
uiTab
两个参数,uiTabsParams
表示打开时,传入的参数,uiTab
表示目前打开的tab页
- options
object
tab的配置
- name tab页名称
- controller controller名称
- template 模版
- templateUrl 模版地址,template和templateUrl选一
- params 传递的参数,当tab页的controller加载时,通过uiTabsParams注入
Promise
打开tab页时,返回 promise
- tabOpenStart
当tab刚被打开时,此时触发tabOpenStart
事件,此时可以通过preventDefault
方法阻止tab的打开
- tabOpenStarting
当开始加载tab页内容时,此时触发tabOpenStarting
事件,此时已经无法阻止tab的打开
- tabOpenSuccess
当tab页打开成功时,触发tabOpenSuccess
事件
- tabOpenError
当tab页加载templateUrl时,或者用户在tabOpenStart
时,通过preventDefault
阻止tab打开时,触发tabOpenError
事件
app.controller('MyController', function($scope, uiTabs){
$scope.$on('tabOpenSuccess', function(event, tab, lastTab){
console.log(tab.name);
});
uiTabs.open({
name: 'tab1',
controller: 'TabController',
template: '<div>tab1</div>',
params: {
transfer: 'transfer'
}
});
});
app.controller('TabController', function($scope, uiTabsParams, uiTab){
console.log(uiTabsParams.transfer);
console.log(uiTab.name);
})
用于关闭一个tab页
- tab
Object|string
tab页实例,或者该tab页的id
boolean
是否关闭成功
- tabCloseStart
当tab开始关闭时,触发tabCloseStart
, 并且可以通过preventDefault
方法阻止tab页的关闭
- tabCloseSuccess
当tab关闭成功时,触发tabCloseSuccess
- tabCloseError
当通过preventDefault
阻止tab关闭时,触发tabCloseError
事件
app.controller('MyController', function($scope, uiTabs){
uiTabs.close('tab1');
})
用于关闭所有tab页,并且每一个的tab页的关闭,都会触发tabCloseStart
tabCloseSuccess
或者tabCloseError
事件,且无法阻止tab页的关闭
app.controller('MyController', function($scope, uiTabs){
uiTabs.closeAll();
})
用于切换当前tab页
- tab
Object|string
tab页实例,或者该tab页的id
boolean
切换是否成功
- tabChangeStart
当切换当前tab页时,触发tabChangeStart
, 并且可以通过preventDefault
方法阻止tab页的切换
- tabChangeSuccess
当当前tab页切换成功时,触发tabChangeSuccess
- tabChangeError
当通过preventDefault
阻止tab切换时,触发tabChangeError
事件
app.controller('MyController', function($scope, uiTabs){
uiTabs.active('tab1');
})
刷新tab页
- tab
Object|string
tab页实例,或者该tab页的id
- tabRefresh
当刷新tab页时,触发tabRefresh
, 无法阻止刷新
app.controller('MyController', function($scope, uiTabs){
uiTabs.refresh('tab1');
})
tab页放置的容器,当通过页面操作造成的刷新,关闭,当前页的切换都会触发相应的事件
<ui-tabs-view></ui-tabs-view>