背景:若依框架里面默认页面都是缓存的,使用this.$router.push 同地址不同参打开页面时,页面也默认缓存了,导致数据不刷新。
解决办法:
1、打开页面前创建一个标记
sessionStorage.setItem("cgsqmx","Refresh");
2、离开页面时发现有这个标记,然后删若依缓存
beforeRouteLeave (to, from, next) { debugger; if (to.name === 'Cgsqmx' && sessionStorage.getItem("cgsqmx")==="Refresh") { try { var cache = this.$vnode.parent.componentInstance.cache; var key=""; for(var prop in cache){ if(prop.lastIndexOf("cgsqmx")>0){ key=prop; } } if(key!=""){ delete cache[key]; } } catch (error) { } // // console.log('返回管理页面') // if (this.$vnode && this.$vnode.data.keepAlive) { // 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"] // debugger; // } // } // } // } this.$destroy() } next() },
3、到达目标页面后,清空标记
sessionStorage.setItem("cgsqmx","");