要求:A进入B,根据不同的id刷新B的页面数据,B进入C,C返回B,如果C有操作数据,返回B后刷新B数据,否则B页面不刷新;第一次尝试*思路是从C进入B,缓存B,其他页面进入B,不缓存B页面:beforeRouteLeave(to,from,next){from.meta.keeplive=false;next();},activated(){//根据$route.meta},Cpage//不刷新路由返回上一页beforeRouteLeave(to,from,next){to.meta.type=this.showChange;to.meta.keeplive=true;if(this.edit){to.meta.isrefer=true;//编辑成功后刷新页面B的数据,状态码}else{to.meta.isrefer=false;}下一个();},理论上没有错,但是问题先来一次,A进入B,B进入C,C返回B,第二次缓存B,A进入B,B会刷新,B再进入C,C再返回给B,B的数据第一次进入B数据的原因:因为B的页面参数还是第一次缓存的参数,所以不管怎么重新加载数据,数据还是先进入的B的数据,因为请求的参数从来没有变过。方案1A页面beforeRouteLeave(to,from,next){to.meta.isrefer=true;//刷新B的数据to.meta.type=false;下一个();},B页面beforeRouteEnter(to,from,next){to.meta.keeplive=true;next(vm=>{//这里重新赋值页面初始值,刷新页面if(vm.$route.meta.isrefer){vm.dataList=[];vm.$route.meta.isrefer=false;//恢复初始值vm.seatList=[]vm.query={activityId:vm.$route.query.activityId,meetplaceId:vm.$route.query.meetplaceId,}vm.getSeatImgList()//请求数据}})},beforeRouteLeave(to,from,next){from.meta.keeplive=true;//每次进入页面缓存Bnext();},C页面同上不变App.vue
