初始化项目
This commit is contained in:
32
src/cache.js
Normal file
32
src/cache.js
Normal file
@@ -0,0 +1,32 @@
|
||||
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();
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user