Tabs (标签导航)
组织和管理多个页面的切换
支持平台
安卓 | ios | 鸿蒙 | web | 微信小程序 |
---|---|---|---|---|
√ | √ | √ | √ | √ |
示例代码
html
<template>
<view>
<t-page title="tabs" main-class="p-30">
<t-card title='Tabs 标签导航' main-class="tdr tdb mb-30" sub-title="组织和管理多个页面的切换"></t-card>
<t-section title='基础使用-type-size' main-class="tdr tdb mb-30"></t-section>
<t-tabs main-class="tdr tdb mb-30" bar-class="twhr-20" :current="current" @change="ontabschange" type="p"
size="large">
<t-tabs-item v-for="(item,i) in tabsList2" :key="i" :value="i" :title="item.title"
:disabled="item.disabled==null?false:item.disabled" :badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-tabs main-class="tdr tdb mb-30" :current="current" @change="ontabschange" type="e" size="medium">
<t-tabs-item v-for="(item,i) in tabsList2" :key="i" :value="i" :title="item.title"
:disabled="item.disabled==null?false:item.disabled" :badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-tabs main-class="tdr tdb mb-30" :current="current" @change="ontabschange" type="w" size="small">
<t-tabs-item v-for="(item,i) in tabsList2" :key="i" :value="i" :title="item.title"
:disabled="item.disabled==null?false:item.disabled" :badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-tabs main-class="tdr tdb mb-30" :current="current" @change="ontabschange" type="s" size="mini">
<t-tabs-item v-for="(item,i) in tabsList2" :key="i" :value="i" :title="item.title"
:disabled="item.disabled==null?false:item.disabled" :badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-section title='禁用滚动+设置主题' main-class="tdr tdb mb-30"></t-section>
<t-tabs main-class="tdr tdb mb-30" :current="current" @change="ontabschange" type="s" size="large"
:scrollable="true">
<t-tabs-item v-for="(item,i) in tabsList1" :key="i" :value="i" :title="item.title"
:disabled="item.disabled==null?false:item.disabled" :badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<t-section title='滚动条插槽+右侧菜单按钮' main-class="tdr tdb mb-30"></t-section>
<t-tabs main-class="tdr tdb mb-30" :current="current" @change="ontabschange" type="p" size="large"
:scrollable="true" rightIcon="list" bar-class="bgn w-30 h-10" right-icon-class="s-60">
<template v-slot:bar>
<t-image main-class="w-30 h-10" src="/pagesA/static/image/tabsline.png"></t-image>
</template>
<t-tabs-item v-for="(item,i) in tabsList1" :key="i" :value="i" :title="item.title"
:disabled="item.disabled==null?false:item.disabled" :badge="item.value!=null && (item.value!)>0"
:badge-attrs="{dot:item.dot ?? false,text:`${item.value==null?0:item.value}`}"></t-tabs-item>
</t-tabs>
<!-- <t-section title='禁用滚动+设置主题' main-class="tdr tdb mb-30"></t-section>
<t-tabs main-class="tdr tdb mb-30" type='p' :current="current" :tabs="tabsList1"></t-tabs>
<t-section title='bar样式设置' main-class="tdr tdb mb-30"></t-section>
<t-tabs main-class="tdr tdb mb-30" :current="current" :tabs="tabsList2" bar-class="twh-15"></t-tabs>
<t-section title='滚动条插槽+右侧菜单' main-class="tdr tdb mb-30"></t-section>
<t-tabs main-class="tdr tdb mb-30" rightIcon="list" :current="current" :tabs="tabsList1">
<template v-slot:bar>
<t-image main-class="w-30 h-10" src="/pagesA/static/image/tabsline-png"></t-image>
</template>
</t-tabs> -->
</t-page>
</view>
</template>
<script>
import { TuiApi } from '@/api'
type TuiTabsOption = {
disabled ?: boolean
dot ?: boolean
title : string
value ?: number
}
export default {
data() {
return {
current: 2,
rowsSize: [['35rpx', '600rpx'], ['35rpx', '300rpx'], ['35rpx', '500rpx'], ['35rpx', '400rpx']],
tabsList: [] as UTSJSONObject[],
tabsList1: [] as TuiTabsOption[],
tabsList2: [] as TuiTabsOption[]
};
},
created() {
TuiApi('testTabslist',{},true).then((res) => {
// this.tabsList = (res['data'] as UTSJSONObject)['list1'] as UTSJSONObject[]
this.tabsList1 = JSON.parse<TuiTabsOption[]>(JSON.stringify((res['data'] as UTSJSONObject)['list2'] as UTSJSONObject[])) as TuiTabsOption[]
this.tabsList2 = JSON.parse<TuiTabsOption[]>(JSON.stringify((res['data'] as UTSJSONObject)['list5'] as UTSJSONObject[])) as TuiTabsOption[]
})
},
methods: {
ontabschange(cur : number) {
console.log(cur)
},
iconClick() {
uni.showToast({
title: '点击右侧插槽'
})
}
},
}
</script>
属性
名称 | 类型 | 默认值 | 说明 | 可选值 |
---|---|---|---|---|
size | String | mini | 组件尺寸 | large(大尺寸), medium(中尺寸), small(小尺寸), mini(迷你) |
type | String | "" | 组件类型 | info(信息), primary(正常), error(错误), warning(警告), success(成功) |
disabled | Boolean | false | 组件是否禁用 | false, true |
stop | Boolean | false | 是否阻止事件冒泡(Tui统一写法处理事件冒泡) | false, true |
hover | Boolean | true | 是否有点击效果 | false, true |
path | String | "" | 点击组件后跳转的页面路径,如果为空则响应点击事件,如果不为空则跳转页面不会响应单击事件。 | - |
mainClass | String | "" | 组件根节点的样式 | - |
nativeClass | String | "" | 组件根节点原生样式 | - |
effect | String | "normal" | 组件显示主题 | normal(正常), dark(深色), light(浅色), plain(镂空) |
scrollable | Boolean | false | 是否可滚动 | |
rightIconClass | String | `` | 右侧图标的样式 | |
current | Number | 1 | 当前滑块所在的索引 | |
rightIcon | String | `` | 右侧图标名称 | |
barClass | String | `` | 滑块的样式 |
事件
名称 | 返回参数 | 说明 |
---|---|---|
click | (e : UniPointerEvent) | - |
change | (index: number) | 当标签切换时触发 |
插槽
名称 | 返回值 | 说明 |
---|---|---|
name | - | |
default | - |