|
- import Vue from 'vue'
- import store from './store';
- Vue.mixin({
- beforeRouteEnter: function (to, from, next) {
- next(() => {
- let avueView = document.getElementById('avue-view');
- if (avueView && to.meta.savedPosition) {
- avueView.scrollTop = to.meta.savedPosition
- }
- })
- },
- beforeRouteLeave: function (to, from, next) {
- let avueView = document.getElementById('avue-view');
- if (from && from.meta.keepAlive) {
- if (avueView) {
- from.meta.savedPosition = avueView.scrollTop
- }
- const result = this.$route.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
- return ele.value === this.$route.fullPath;
- })
- if (this.$vnode && !result) {
- from.meta.savedPosition = 0
- if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
- if (this.$vnode.componentOptions) {
- var key = this.$vnode.key == null
- ? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
- : this.$vnode.key;
- var cache = this.$vnode.parent.componentInstance.cache;
- var keys = this.$vnode.parent.componentInstance.keys;
- if (cache[key]) {
- if (keys.length) {
- var index = keys.indexOf(key);
- if (index > -1) {
- keys.splice(index, 1);
- }
- }
- delete cache[key];
- }
- }
- }
- }
- }
- next();
- },
- });
|