vue 修改模板{{}}标签_vue-element-template实战(三)增加多标签页

本文详细介绍了如何将vue-element-admin的多标签页功能应用到vue-admin-template项目中,包括复制相关文件、修改组件、配置store、处理标签删除问题等步骤,确保功能的正常实现。
摘要由CSDN通过智能技术生成

按照作者所说的,需要什么功能,从vue-element-admin-master中拷贝过来使用即可。

一、从vue-element-admin复制文件:

vue-admin-template\src\layout\components\TagsView  文件夹

vue-admin-template\src\store\modules\tagsView.js

二、修改 vue-admin-template\src\layout\components\AppMain.vue :AppMain.vue文件,修改如下:

name:'AppMain',

computed: {//需要缓存的页面 固钉

cachedViews() {return this.$store.state.tagsView.cachedViews

},

key() {return this.$route.fullPath

}

}

}

.app-main {/*84 = navbar + tags-view = 50 + 34*/min-height: calc(100vh -84px);

}

.fixed-header+.app-main {

padding-top: 84px;

}

}

//fix css style bug in open el-dialog

.el-popup-parent--hidden {

.fixed-header {

padding-right: 15px;

}

}

三、修改vue-admin-template\src\layout\components\index.js,新增如下行

export { default as TagsView } from './TagsView'

四、在 vue-admin-template\src\layout\index.vue 文件中 新增 tagsview标签

import { Navbar, Sidebar, AppMain,TagsView } from './components'

components: {

Navbar,

Sidebar,

AppMain,

TagsView//新增

},

五、vue-admin-template\src\store\getters.js,增加:

visitedViews: state =>state.tagsView.visitedViews,

cachedViews: state=> state.tagsView.cachedViews,

六、修改 vue-admin-template\src\store\index.js

import tagsView from './modules/tagsView'

const store = newVuex.Store({

modules: {

app,

settings,

tagsView,//此处新增

user

},

getters

})

七、修改vue-admin-template\src\settings.js 添加

tagsView: true,

设置为根据值,是否选择加载。

八、修改vue-admin-template\src\store\modules\settings.js

const { showSettings, fixedHeader, sidebarLogo,tagsView } = defaultSettings

const state ={

showSettings: showSettings,

tagsView: tagsView,//此处新增

fixedHeader: fixedHeader,

sidebarLogo: sidebarLogo

}

九、解决问题

1、删除vue-admin-template\src\layout\components\TagsView\index.vue中routes方法(因为没有用到权限校验)

computed: {

visitedViews() {return this.$store.state.tagsView.visitedViews

}/*,

routes() {

return this.$store.state.permission.routes

}*/},

2、遍历标签时可能控制台报错

filterAffixTags(routes, basePath = '/') {

let tags=[]//判断是否为空,否则控制台会报错

if(this.routes){

routes.forEach(route=>{if (route.meta &&route.meta.affix) {

const tagPath=path.resolve(basePath, route.path)

tags.push({

fullPath: tagPath,

path: tagPath,

name: route.name,

meta: { ...route.meta }

})

}if(route.children) {

const tempTags= this.filterAffixTags(route.children, route.path)if (tempTags.length >= 1) {

tags=[...tags, ...tempTags]

}

}

})

}returntags

},

3、删除全部标签后,会跳到404页面,所以要固定一些版面是不允许删除的。

在meta中加上affix: true就能使它不可删除,例如:meta: { title: '首页', icon: 'dashboard', affix: true }

{

path:'/',

component: Layout,

redirect:'/dashboard',

children: [{

path:'dashboard',

name:'Dashboard',

component: ()=> import('@/views/dashboard/index'),

meta: { title:'后台管理系统', icon: 'dashboard' , affix: true}

}]

},

以上步骤,亲测可行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值