【问题标题】:Merging multiple v-slot:activator and v-on in vuetify templates在 vuetify 模板中合并多个 v-slot:activator 和 v-on
【发布时间】:2020-07-03 16:33:25
【问题描述】:

我正在尝试创建可重用的模式窗口,应该通过按下每个 v-data-table 行上的图标来调用该模式窗口。此外,每个图标都应该有鼠标悬停的工具提示。

根据 vuetify 文档,这两个操作都使用相同的结构:v-slot:activator="{ on }"v-on="on"。问题是——在 Vue/Vuetify 中有没有一种方法可以合并这些结构并获得所需的行为?

目前我找到了一种通过添加额外的<a> 标签来获得我想要的东西的方法:

<template>
  <v-data-table :headers="headers" :items="tableItems">
    <template v-slot:item="props">
      <tr>
        <td>{{ props.item.text }}</td>
        <td>
          <some-modal>
            <template v-slot:activator="{ on }">
              <a v-on="on">
                <v-tooltip bottom>
                  <template v-slot:activator="{ on }">
                    <v-icon v-on="on" small class="mr-2">delete</v-icon>
                  </template>
                  <span>Tooltip message</span>
                </v-tooltip>
              </a>
            </template>
          </some-modal>
        </td>
      </tr>
    </template>
  </v-data-table>
</template>

但也许有任何方法可以合并 v-slot:activatorv-on 而无需额外的 &lt;a&gt; 标签?

Codesandbox with current behavior

【问题讨论】:

    标签: vue.js vuetify.js


    【解决方案1】:

    偶然发现解决方案 here,感谢 @Yom T。

    <v-menu>
      <template #activator="{ on: onMenu }">
        <v-btn v-on="onMenu">Menu Trigger</v-btn>
    
        <v-tooltip bottom>
          <template #activator="{ on: onTooltip }">
            <v-btn v-on="{ ...onMenu, ...onTooltip }">Menu Trigger with Tooltip</v-btn>
          </template>
    
          <span>Tooltip Content</span>
        </v-tooltip>
      </template>
    </v-menu>
    

    【讨论】:

    • 是的,它有助于解决问题。感谢关注! :)
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2019-03-13
    • 2020-07-21
    • 2021-11-22
    • 1970-01-01
    • 2020-06-03
    • 2021-11-22
    • 2020-03-21
    相关资源
    最近更新 更多