#vue.js #vuejs2 #vue-component #vuex #vuetify.js
#vue.js #vuejs2 #vue-компонент #vuex #vuetify.js
Вопрос:
У меня есть диалоговое окно (модальное), которое открывается, когда я получаю сообщение об ошибке от API. но, похоже, я не могу его закрыть. Я использую Vuetify.
шаблон:
<v-dialog v-model="isLoginFailed" hide-overlay persistent width="300">
<v-card color="primary" dark>
<v-card-text>{{ isLoginFailed }}</v-card-text>
</v-card>
</v-dialog>
скрипт:
computed: {
isLoginFailed() {
return this.$store.state.errorMessage;
},}
methods: {
clearDialog() {
this.$store.commit("clearDialog");
}
},
Магазин:
mutations: {
clearDialog(state) {
state.errorMessage = "";
},
signInPending(state) {
state.isPending = true;
},
signInFailed(state, e) {
state.isPending = false;
state.errorMessage = e.errorMessage;
},
signInSuccess(state, user) {
state.isPending = false;
}
},
Я не уверен, как активировать clearDialog
, я не хочу иметь кнопку для его закрытия, я хочу, чтобы пользователь мог щелкнуть вне диалогового окна, чтобы закрыть его.
Как я могу это сделать?
P.S является ли их более чистым / разумным способом обработки вызовов API и модального открытия?
Удалось заставить его работать, удалив persistent
и
signInPending(state) {
state.isPending = true;
state.errorMessage = "";
}
Ответ №1:
Удалите persistent
реквизит и добавьте параметр к вычисляемому свойству :
<v-dialog v-model="isLoginFailed" hide-overlay width="300">
<v-card color="primary" dark>
<v-card-text>{{ isLoginFailed }}</v-card-text>
</v-card>
</v-dialog>
computed: {
isLoginFailed : {
get(){
return this.$store.state.errorMessage;
},
set(val){
}
},}
Комментарии:
1. Это работает, но только в первый раз. Если я попытаюсь выполнить другой вызов API (войти), диалоговое окно не откроется.
2. как вы выполняете эти вызовы API?