本模板提供了最精简实现的代码,简单易懂,以及灵活控制tab的接口。
演示demo 账号superadmin 密码666666
demo中增加了类似浏览器标签功能、拖拽、右键等。
- tab页面数据的缓存统一管理
- tab页面关闭,缓存自动释放,以及tab页面缓存手动清除,灵活控制。
- tab打开数量限制
- tab页面的滚动条状态
- tab页面的跳转调用以及刷新
- tab页面实现逻辑与业务系统逻辑分离,甚至取消tab,系统可以正常使用。
- 打开tab页面:直接使用this.$router.push();若页面已存在,则激活已存在的tab。
- 手动删除某路由的缓存: this.$store.commit("tab/DelCache", "xxxxx");"xxxxx"为该页面路由的name
- 强制刷新当前页面: this.$store.dispatch("tab/reflush")
- 1.tab实现的代码为 TabCtrl.js、TabView.vue 两个文件。
- 2.全局store注入子模块 tab 例如:
import tab from './components/TabCtrl'
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
modules:{
tab
}
})
- 3.配置路由(懒加载路由也一样) 注意: 路由名称为必须配置项; tab显示的标题,暂时放到meta属性里面; 例如:
{
path: '/home',
name: 'home',
redirect:'home/index',
// component: Home
component: () => import(/* webpackChunkName: "about" */ './views/Home.vue'),
children:[
{
path: '/home/index',
name: 'home.index',
meta :{title:"首页"},
component: () => import(/* webpackChunkName: "about" */ './views/Tabs/Index.vue')
},
{
path: '/home/test',
name: 'home.test',
meta :{title:"测试tab"},//此处为规则配置页面 title为Tab显示的标题
component: () => import(/* webpackChunkName: "about" */ './views/Tabs/Test.vue')
},
{
path: '/home/hasparam/:name',
name: 'home.hasparam',
meta :{title:"带参数"},//此处为规则配置页面 title为Tab显示的标题
component: () => import(/* webpackChunkName: "about" */ './views/Tabs/HasParam.vue'),
props:true
}
]
}
- 4.修改TabCtrl.js 更改默认 app路由配置文件、 tab打开最大数量、 打开页面。
import router from '../router' //app路由配置文件
import Vue from 'vue'
var maxtab = 6;//tab打开最大数量配置
var defaulttab = {//默认打开页面
title: '首页',
routername: 'home.index',//路由名称
routerparams: null,//路由参数
closable: false
};
- 5.替换
<router-view/>
为
<tab-view/>
- 6.您可能还需要修改tab标签的样式。最后编译成功。恭喜你,你自己的项目已经可以实现多tab页导航的功能。