Как показать прогресс навигации только тогда, когда все проверки выполнены - Vue.js - PullRequest
0 голосов
/ 16 июня 2019

Я работаю со средствами защиты маршрутизатора в моем проекте 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 в браузер.

Спасибо за помощь заранее.

...