Я пытаюсь работать с контекстным меню для Vue3. Я хочу показать список элементов под v-menu
, щелкнув правой кнопкой мыши кнопку раскрывающегося списка. Я работаю над этой ссылкой в качестве ссылки, но когда я попытался сделать то же самое в своем файле Vue3, это дает мне такую ошибку:
Может ли кто-нибудь предложить, что я делаю неправильно? Вот код-
<v-menu offset-y>
<template v-slot:activator = "{ props }">
<v-btn
color = "primary"
dark
v-bind = "props"
@contextmenu.prevent = "props.click"
>
Dropdown
</v-btn>
</template>
<v-list>
<v-list-item
v-for = "(item, index) in menuClick"
:key = "index"
@click = ""
>
<v-list-item-title>{{ item.title }}</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
Я не смог обнаружить ни одного события context menu
в документе Vue3 и API меню Vuetify. Хотя у меня есть альтернатива, которая может выполнить эту работу. Вы можете использовать синхронизацию модификатора .right
с v-model
, чтобы открыть меню правым щелчком кнопки.
Вот стратегия-
v-model
для управления статусом переключения v-menu
.v-model
значение true, чтобы меню было открыто.v-model
значение false. (Выполняйте этот шаг, только если вы не хотите открывать меню по щелчку по умолчанию.)Вот работающая демо-
const { createApp } = Vue
const { createVuetify } = Vuetify
const vuetify = createVuetify()
const app = createApp({
data: () => ({
menu: false,
items: [
{ title: 'Click Me' },
{ title: 'Click Me' },
{ title: 'Click Me' },
{ title: 'Click Me 2' },
],
}),
}).use(vuetify).mount('#app')
<script src = "https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.js"></script>
<link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css">
<div id = "app">
<v-app>
<div class = "d-flex justify-space-around mb-5 font-weight-bold">
I will open only with the right-click.
</div>
<div class = "d-flex justify-space-around">
<v-menu v-model = "menu">
<template v-slot:activator = "{ props }">
<v-btn
color = "primary"
v-bind = "props"
@click.left.prevent = "menu = false"
@click.right.prevent = "menu = true"
>
Dropdown
</v-btn>
</template>
<v-list>
<v-list-item
v-for = "(item, index) in items"
:key = "index"
:value = "index"
>
<v-list-item-title>{{ item.title }}</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
</div>
</v-app>
</div>
Спасибо. Это сработало прекрасно. Надеюсь, что контекстное меню скоро будет реализовано в vue3.