在 vuetify 中为 v-dialog 激活器使用自定义事件

Posted

技术标签:

【中文标题】在 vuetify 中为 v-dialog 激活器使用自定义事件【英文标题】:Using a custom event for a v-dialog activator in vuetify 【发布时间】:2021-02-01 08:38:39 【问题描述】:

我目前正在将 Vuetify 用于具有一系列 v-dialog 组件的应用程序。

我目前有:

                    <template v-if="topic">
                        <v-dialog v-model="removeTagDialogs[removeTagDialogs.indexOf(tag.id)]" v-for="(tag, iii) in topic.tags" :key="iii" persistent max->
                            <template v-slot:activator=" on, attrs ">
                                <v-chip close color="primary" text-color="white" class="mr-1" v-bind="attrs" v-on="on"> tag.name.en </v-chip>
                            </template>

                            <v-card>
                                <v-card-title class="error--text text-center">Remove Tag?</v-card-title>
                                <v-card-actions>
                                    <v-btn color="error" @click="removeTagDialogs[removeTagDialogs.indexOf(tag.id)] = false">Cancel <v-icon small color="white">mdi-cancel</v-icon></v-btn>
                                    <v-btn color="error" @click="removeTag(tag.id)">Remove <v-icon small color="white">mdi-delete</v-icon></v-btn>
                                </v-card-actions>
                            </v-card>
                        </v-dialog>
                    </template>

效果很好,但是只有当我点击徽章组件的主要部分而不是关闭图标时才会启用对话框。我需要将其更改为另一种方式,即按下关闭图标时打开对话框。

我尝试修改v-on 属性以直接使用click:close 事件但是它不起作用。

<v-chip close color="primary" text-color="white" class="mr-1" v-bind="attrs" v-on="click:close"> tag.name.en </v-chip>

如何修改它以打开click:close 事件的对话框?

【问题讨论】:

【参考方案1】:

尝试破坏 on 插槽属性,然后运行已破坏的 click 作为 click:close 事件的处理程序:

<template v-slot:activator=" on:  click , attrs ">
     <v-chip ... @click:close="click"> tag.name.en </v-chip>
</template>

灵感来自this answer

【讨论】:

那没有影响。

以上是关于在 vuetify 中为 v-dialog 激活器使用自定义事件的主要内容,如果未能解决你的问题,请参考以下文章

v-dialog vuetify vueJS 中的高度

传递激活器插槽

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

“插槽激活器”如何在 vuetify 中工作?

Vuetify VTooltip 仅在激活器单击时触发

重置 Vuetify 表单验证