vue-admin-template路由切换组件刷新
vue-admin-template
PanJiaChen/vue-admin-template: 基于 Vue.js 和 Element UI 的后台管理系统模板,支持多语言、主题和布局切换。该项目提供了一个完整的后台管理系统模板,可以方便地实现后台管理系统的快速搭建和定制,同时支持多种数据源和插件扩展。
项目地址:https://gitcode.com/gh_mirrors/vu/vue-admin-template
免费下载资源
·
问题:
在使用vue-admin-template进行页面搭建时发现每次路由切换都会调用created方法进行页面刷新。查看文档得知,需要开启缓存,但在实际操作时问题再次出现。
添加页面缓存:
首先是在路由中:(src/router/index.js)
对需要添加缓存的页面对应的路由在meta中添加:keepAlive: true
一个完整的页面路由如下:
{
path: '/resQuery',
component: Layout,
redirect: '/resQuery/resQuery',
children: [
{
path: 'resQuery',
name: 'res_query',
// hidden: true,
component: () => import('@/views/resQuery/resQuery'),
meta: { title: '综合信息查询', icon: 'el-icon-s-tools', noCache: false, keepAlive: true }
}
]
},
添加属性之后,进到浏览器对路由进行切换测试,发现不能实现缓存的话:
在AppMain.vue中(src/layout/components/AppMain.vue)添加如下配置:
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
return this.$route.path
完整的AppMain:
<template>
<section class="app-main">
<transition name="fade-transform" mode="out-in">
<div>
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</transition>
</section>
</template>
<script>
export default {
name: 'AppMain',
computed: {
key() {
return this.$route.path
}
}
}
</script>
<style scoped>
.app-main {
/*50 = navbar */
min-height: calc(100vh - 50px);
width: 100%;
position: relative;
overflow: hidden;
}
.fixed-header+.app-main {
padding-top: 50px;
}
</style>
<style lang="scss">
// fix css style bug in open el-dialog
.el-popup-parent--hidden {
.fixed-header {
padding-right: 15px;
}
}
</style>
此时进入浏览器进行测试即可发现缓存成功。
问题再次出现(每次路由切换路由页面都被缓存)
此时就需要用自己的代码逻辑对页面按照自己需求进行页面刷新。
我的解决方式为:
在localStorage中存储一个标记用于标识页面状态,然后再进行页面跳转,跳转到目标页面后将标记get出来,然后进行一下标识判断,判断为true进行页面刷新,并将标识进行反向复制。
具体代码:
getMember(groupNums){
console.log(groupNums);
window.localStorage.setItem("fresh_flag",1);
window.localStorage.setItem("numGrou",groupNums);
this.$router.push({
path:'/groupInfo',
name:'group_info'
})
},
activated(){
var that = this;
//QQ信息跳转结果
var ff = window.localStorage.getItem("fresh_flag");
if (ff == 1) {
var ng = window.localStorage.getItem("numGrou");
that.req_data.keywords = ng;
that.req_data.type = 1;
that.getGroupData();
window.localStorage.setItem("fresh_flag",0);
window.localStorage.setItem("numGrou",'');
that.req_data.type = '';
}
}
GitHub 加速计划 / vu / vue-admin-template
16
5
下载
PanJiaChen/vue-admin-template: 基于 Vue.js 和 Element UI 的后台管理系统模板,支持多语言、主题和布局切换。该项目提供了一个完整的后台管理系统模板,可以方便地实现后台管理系统的快速搭建和定制,同时支持多种数据源和插件扩展。
最近提交(Master分支:4 个月前 )
4c18a3f4 - 3 年前
714ded11 - 4 年前
更多推荐
已为社区贡献1条内容
所有评论(0)