当进行keep-alive进行缓存页面时,其方法并未销毁。我的比较low的解决办法是:
beforeRouteEnter(to, from, next) {
routerLeave = false;
next();
},
beforeRouteLeave(to, from, next) {
from.meta.keepAlive = true;
routerLeave = true;
if (to.path == "/Detailclassmate") {
to.meta.keepAlive = false;
}
next();
},
通过增加routerLeave变量感知是否离开了页面。但是注意在beforeRouterEnter这个函数中获取不到当前组件实例,所以这个变量要在组件外面声明
import ClassmateList from "./component/ClassmateList.vue";
import FootClassmate from "./component/FootClassmate.vue";
import "@/assets/css/community.css";
import { setTimeout } from "timers";
import { isArray } from "util";
import { changeExpression } from "./changeExpression.js";
我在这里声明的变量
let routerLeave = false;
export default {
name: "Friend",
components: {
HeadClassmate,
Message,
Scoller,
ClassmateList,
FootClassmate
},
data() {
然后在滚动加载的函数中增加
onload() {
if (this.isNewInit || this.scollEnd || routerLeave) return;
this.loading = true;
this.$vux.loading.show({
text: "Loading"
});
this.page++; ... ...
}