Я работаю со средствами защиты маршрутизатора в моем проекте vue2 и хотел бы показывать прогресс навигации только тогда, когда все проверки выполнены или происходит фактический переход.
Вот что я имею в виду:
В моем коде я использую метод before-разрешения маршрутизатора vue для обработки этого
router.beforeResolve(function(to, from, next){
if ( to.name ) {
// Show this
NProgress.start();
}
// Do some other checks here
if ( to.matched.some( function( record ){ return record.meta.requiresAdmin } ) ) {
if ( ! store.getters.session.authenticated ) {
next({
name: 'login',
query: { redirect: to.fullPath }
});
} else if ( ! store.getters.session.admin ) {
next({
name: 'permission'
});
} else {
next();
}
} else {
next();
} ....
После
router.afterEach(function(to, from){
document.title = to.meta.title;
NProgress.done();
});
Таким образом, в основном пользователь нажимает на ссылку администратора, если сеанс.admin, пользователь перемещен на следующий маршрут, иначе у шоу нет страницы разрешений.
Моя дилемма в том, что если пользователь находится на странице запретов и снова щелкает ссылку администратора.
По умолчанию vue не обновляет страницу, потому что вы технически возвращаетесь на ту же страницу, поскольку у вас нет разрешения ... но NProgress.start ();является видимым и не заканчивается.
Как мне обработать этот случай так, что NProgress.start () показывает только, когда происходит фактический обмен страниц.
Школа мысли предложит мне не показывать кнопку администратора в первую очередь.Да, я собираюсь справиться с этим с помощью v-if, но также буду следить за тем, чтобы этого не происходило, когда пользователь вручную вводит URL в браузер.
Спасибо за помощь заранее.