关闭依赖于 Vuetify 中存储的数据的对话框

Posted

技术标签:

【中文标题】关闭依赖于 Vuetify 中存储的数据的对话框【英文标题】:Close dialog that depends on data from store in Vuetify 【发布时间】:2021-01-04 10:10:57 【问题描述】:

我有一个对话框(模态),当我从 API 收到错误消息时会打开。 但我似乎无法关闭它。 我正在使用 Vuetify。

模板:

<v-dialog v-model="isLoginFailed" hide-overlay persistent >
      <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 属性并为计算属性添加一个setter:

<v-dialog v-model="isLoginFailed" hide-overlay  >
      <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)

        
    ,

【讨论】:

它有效,但只是第一次。如果我尝试进行另一个 API 调用(登录),对话框将不会打开。 你是怎么做那个 api 调用的?

以上是关于关闭依赖于 Vuetify 中存储的数据的对话框的主要内容,如果未能解决你的问题,请参考以下文章

vuejs / vuetify:手动关闭对话框的生成列表

使用 v-slot:activator 时关闭自定义组件中的 Vuetify v-dialog

重置 Vuetify 表单验证

用户登录应用程序后如何打开 vuetify 对话框

如何在 vue.js 中使用 @click 触发两个事件

登录对话框剪辑在 Vuetify 的工具栏下