Vue обрабатывать множественную модальную логику - PullRequest
0 голосов
/ 25 мая 2020

У меня есть Laravel / Vue / Vuex SPA, в котором у меня есть модальный лог c, с которым я не могу справиться так, как я хочу. Я возьму один пример использования, например:

Вы вышли из системы и хотите отметить беседу как конфиденциальную. PleaseLogInModal открывается. Стоит отметить, что это модальное окно может запускаться в разных местах, которые не имеют того же logi c, что и этот вариант использования (скажем, вы хотите посмотреть страницу профиля, но вы вышли из системы).

PleaseLogInModal имеет одну кнопку для запуска метода login. Специфика метода не имеет значения, но важно то, что login может вызываться естественным образом из разных мест в приложении.

Поток в этом варианте использования таков, что после входа в систему должно произойти одно из двух:

  1. У вас достаточно кредитов -> триггер lock метод
  2. У вас недостаточно кредитов -> открыть PaymentModal

Метод, который открывает начальный модальный:

makePrivate() {
    if (!this.isLoggedIn) {
        this.$store.dispatch('openModal', 'PleaseLoginModal');
        return;
    }

    if (this.isConversationPrivate) {
        this.$store.dispatch('openModal', 'ConversationAlreadyPrivateModal');
        return;
    }

    this.$store.dispatch('openModal', 'MakePrivateModal');
}

Итак, у меня проблема в том, что нет способ получить обратный вызов от PleaseLoginModal, потому что, если я привяжу к нему then(), он сработает при открытии модального окна, а не при входе в систему и закрытии модального.

У меня возникла идея изменить go на PleaseLoginModal и изменить:

login(){
    this.$store.dispatch('login');
}

на что-то вроде:

props:{
    callback: String
},
methods: {
    login(){
        this.$store.dispatch('login').then(() => {
            this.$store.dispatch(this.callback);
        });
    }
}

Где я бы передал обратный вызов, например openModal или что-то в этом роде, но поскольку этот модальный модуль открывается из нескольких мест, мне пришлось бы реализовать несколько разных модальных логик в зависимости от того, кто его открыл, и это кажется действительно грязным решением. Как мне сделать это лучше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...