Skip to content

Закрытие модального окна с помощью vue-router

По умолчанию модальное окно не закрывается при изменении пути (vue-router). Это было сделано намеренно, потому что в вашем проекте может не быть этой библиотеки или какой-либо другой для работы с маршрутами. Также это функция не тяжёлая даже для программиста начального уровня.

Vue Router

Для закрытия модального окна с помощью библиотеки vue-router нужно прописать следующий хук:

ts
import {getCurrentModal, closeModal} from "jenesius-vue-modal";

const router = new VueRouter({...})

router.beforeEach(async (to, from, next) => {
    // Есть ли открытые окна
    if (getCurrentModal()) { // (1)
        try {
            await closeModal(); // (2)
            next(); // (3)
        } catch (e) {
            // ...
            next(false); // (4)
        }
    } else next();
})

Давайте посмотрим, что здесь происходит:

  • (1) - Если текущее модальное окно не undefined, нам нужно закрыть все модальные окна (2).
  • (3) - Если закрытие прошло успешно, то подтверждаем переход на следующий маршрут.
  • (4) - Отключаем переход, если closeModal выдал ошибку (модальное окно осталось открытым).