我想right click event 为 v-treeview添加以打开菜单,但我失败了。我创建了一个可以在左键单击时打开菜单的版本,主要代码是
<v-treeview v-model="tree" :open="open" :items="items" activatable item-key="name" >
<template v-slot:label="{item, open, selected}">
<v-menu
:value="showMenu"
>
<template v-slot:activator="{ on }">
<v-btn
flat
:ripple="false"
class="ma-0 pa-0"
v-on="on"
>
<!--button icon-->
<v-icon v-if="!item.file">
{{ open ? 'mdi-folder-open' : 'mdi-folder' }}
</v-icon>
<v-icon v-else>
{{ files[item.file] }}
</v-icon>
<!--button text-->
{{item.name}}
</v-btn>
</template>
<v-list>
<v-list-tile v-for="menuItem in menuItems" :key="menuItem">
<v-list-tile-title>{{menuItem}}</v-list-tile-title>
</v-list-tile>
</v-list>
</v-menu>
</template>
</v-treeview>
Run Code Online (Sandbox Code Playgroud)
注:源代码可在https://codepen.io/lhuangjs/pen/axMpYJ运行
但我是迷茫
v-on="on"的activator slot这么多,我得到一些信息https://github.com/vuetifyjs/vuetify/issues/6866。然而我还是无法理解。有没有更清楚的解释?
谢谢!
您必须在树节点上使用 @contextmenu。
我试图实现你所尝试的。https://codepen.io/anon/pen/QPoYOQ?editors=1010#anon-login
但是为了让树看起来不错,你必须做一些 CSS 调整。我不确定除了 v-btn 或 v-card 之外的任何元素都接受@contextmenu 事件处理程序。
<div id="app">
<v-app id="inspire">
<v-treeview v-model="tree" :open="open" :items="items" activatable item-key="name">
<template v-slot:label="{item, open, selected}">
<v-btn flat @contextmenu="show">
<!--button icon-->
<v-icon v-if="!item.file">
{{ open ? 'mdi-folder-open' : 'mdi-folder' }}
</v-icon>
<v-icon v-else>
{{ files[item.file] }}
</v-icon>
<!--button text-->
{{item.name}}
</v-btn>
</template>
</v-treeview>
<v-menu v-model="showMenu" :position-x="x" :position-y="y" absolute offset-y>
<v-list>
<v-list-tile v-for="menuItem in menuItems" :key="menuItem" @click="clickAction">
<v-list-tile-title>{{menuItem}}</v-list-tile-title>
</v-list-tile>
</v-list>
</v-menu>
</v-app>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6657 次 |
| 最近记录: |