<template>
<div>
<top-loader ref="topLoader"></top-loader>
<div class="container">
<router-view></router-view>
</div>
</div>
</template>
<script>
import Toploader from '../global/Toploader.vue';
export default {
components: {
'top-loader': Toploader,
},
mounted () {
this.$refs.topLoader.start();
setTimeout(() => {
this.$refs.topLoader.done();
}, 2000)
//works here
},
beforeRouteUpdate (to, from, next) {
this.$refs.topLoader.done();
console.log(to);//not even this
next();
},
beforeRouteLeave (to, from, next) {
this.$refs.topLoader.start();
console.log(to);//not even this
next();
}
};
</script>
Это мой единственный файловый компонент, который вызывается в app.js:
require('./scripts/bootstrap');
window.Vue = require('vue');
import SFC from './components/SFC.vue'
import Routes from './routes/routes'
import VueRouter from 'vue-router'
Vue.use(VueRouter);
const router = new VueRouter({routes: Routes, mode: 'history'});
const app = new Vue({
el: '#root',
render: h => h(SFC),
router: router
});
У меня есть 3 маршрута ('/', '/ about', '/ contact') внутри файла маршрутов ..
Ничто не работает с beforeRouteUpdate или Leave, но если я добавлю watcher для $ route, это сработает ...
Как это:
watch: {
$route(to, from) {
console.log('after', this.$route.path);
}
}
Но это срабатывает после загрузки маршрута, мне нужен один, прежде чем он покинет текущий маршрут, и один после того, как он загрузит следующий маршрут.
Любая помощь?