Files
cmanager/src/cache.js

33 lines
1.2 KiB
JavaScript
Raw Normal View History

2024-02-02 15:04:47 +08:00
import Vue from 'vue'
import store from './store';
Vue.mixin({
beforeRouteLeave: function (to, from, next) {
if (this.$route.meta.keepAlive === true) {
const result = this.$route.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
return ele.value === this.$route.fullPath;
});
if (this.$vnode && !result) {
if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
if (this.$vnode.componentOptions) {
let key = this.$vnode.key == null
? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
: this.$vnode.key;
let cache = this.$vnode.parent.componentInstance.cache;
let keys = this.$vnode.parent.componentInstance.keys;
if (cache[key]) {
if (keys.length) {
let index = keys.indexOf(key);
if (index > -1) {
keys.splice(index, 1);
}
}
delete cache[key];
}
}
}
}
}
next();
},
});