1.在APP.vue中,声明reload方法,控制router-view模块的显示或者隐藏,从而控制页面的再次加载
<template>
<div id="app">
<router-view v-if="isRouterAlive"></router-view>
</div>
</template>
<script>
export default {
name: 'App',
provide() {
return {
reload: this.reload
}
},
data() {
return {
isRouterAlive: true
}
},
methods: {
reload() {
this.isRouterAlive = false
this.$nextTick(function() {
this.isRouterAlive = true
})
}
}
}
</script>
2.在图表页面监听浏览器的刷新,使用this.reload()调用,即可刷新当前页面
<template>
<ve-pie :data="chartData"></ve-pie>
</template>
<script>
export default {
data() {
return {
chartData: {
columns: ['日期', '访问用户'],
rows: [{
'日期': '1/1',
'访问用户': 1393
},
{
'日期': '1/2',
'访问用户': 3530
},
{
'日期': '1/3',
'访问用户': 2923
},
{
'日期': '1/4',
'访问用户': 1723
},
{
'日期': '1/5',
'访问用户': 3792
},
{
'日期': '1/6',
'访问用户': 4593
}
]
}
}
},
inject: ["reload"], //注入reload方法
created() {
},
mounted() {
var that = this;
// 监听浏览器是否关闭
window.addEventListener('beforeunload', e => {
localStorage.setItem('ref', 'yes');
});
let ref = localStorage.getItem("ref");
if(ref == "yes") {
that.browerStatus();
}
},
methods: {
browerStatus(e) {
window.localStorage.removeItem('ref')
this.reload(); //此处刷新页面
},
},
}
</script>