Vue/Vuetify:显示/隐藏父组件的对话框。 Esc 键不起作用

Posted

技术标签:

【中文标题】Vue/Vuetify:显示/隐藏父组件的对话框。 Esc 键不起作用【英文标题】:Vue/Vuetify: Showing/hiding dialog from parent component. Esc key not working 【发布时间】:2021-01-13 04:06:30 【问题描述】:

我使用 vuetify 库。我想显示一个从子组件到父组件的对话框。我完成了。但是第一次打开对话框时 ESC 键不起作用。看起来我在某个地方犯了一个错误。有人可以帮我吗?

父组件:

html 代码

<template v-slot:top>
  <v-card-actions id="action">
    <v-btn color="primary" dark class="mb-2" @click.stop="showDialog">
      <v-icon>post_add</v-icon>Add
    </v-btn>
    <div class="mx-1" />
    // call dialog from child component
    <ItemCreationDialog
      :valueDialog="valueDialog"
      @updateValueDialog="updateValueDialog"
    />
  </v-card-actions>
</template>

javascript代码:

<script>
import ItemCreationDialog from "./Dialog";

export default 
  components:  ItemCreationDialog ,
  data: () => (
    search: "",
    valueDialog: false,
  ),

  computed: ,

  watch: ,

  created() ,

  methods: 
    updateValueDialog(val) 
      this.valueDialog = val;
    ,
    showDialog() 
      this.valueDialog = true;
    ,
  ,
;
</script>

子组件:

HTML 代码

<template>
  <v-dialog v-model="itemCreationDialog" max->
    <v-card>
      <v-card-title> </v-card-title>
      <v-card-text> </v-card-text>

      <v-card-actions>
        <v-spacer />
        <v-btn color="primary" text @click="close">Cancel</v-btn>
        <v-btn color="primary" text @click="save">Save</v-btn>
      </v-card-actions>
    </v-card>
  </v-dialog>
</template>

javascript代码:

<script>
export default 
  props: 
    valueDialog: Boolean,
  ,
  data: function () 
    return ;
  ,
  watch: ,
  computed: 
    itemCreationDialog: 
      get() 
        return this.valueDialog;
      ,
      set(valueDialog) 
        this.$emit("updateValueDialog", false);
      ,
    ,
  ,

  methods: 
    close() 
      this.$emit("updateValueDialog", false);
    ,
    handleOpenPopup() ,
    save() 
      this.$emit("updateValueDialog", false);
    ,
  ,
;
</script>

【问题讨论】:

【参考方案1】:

我认为您应该在对话框中添加 ESC 事件。类似:

<v-dialog v-model="itemCreationDialog" max- @keydown.esc="close">

【讨论】:

以上是关于Vue/Vuetify:显示/隐藏父组件的对话框。 Esc 键不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何访问深层嵌套父级中的方法 [Vue][Vuetify]

Vue.js 对话框/模态在父组件上关闭

Vue模态框的封装

如何在 Laravel 的其他 Vue/Vuetify 组件中嵌入 Vue/Vuetify 组件?

nx工程图怎么隐藏基本视图

Vue + Vuetify重用快餐/警报