Using Vuetify tooltip (v-tooltip) component with an external activator (i.e. not wrapped)

后端 未结 2 469
[愿得一人]
[愿得一人] 2021-02-10 16:52

I understand how to use Vuetify\'s v-tooltip with the tooltip wrapping the component. However, I\'m not quite sure how to have the activator button outside.

e.g. I have

相关标签:
2条回答
  • 2021-02-10 17:08

    Try this:

    <v-tooltip bottom
      v-model="filterBtnTTip"
    >
      Filter displayed items
    </v-tooltip>
    
    <v-btn
      icon
      @click="isFilter = !isFilter"
      @mouseover="filterBtnTTip = true"
      @mouseleave="filterBtnTTip = false"
    >
      <v-icon>fa-filter</v-icon>
    </v-btn>
    
    ...
    data () {
      return {
        ...
        filterBtnTTip: false
      }
    }
    
    0 讨论(0)
  • 2021-02-10 17:17

    How about using the v-hover UI Component. Wrap it around your button. Bind a boolean variable to the v-hover using v-model, call it buttonHovering. Then bind a boolean variable to the v-tooltip using v-model, call it showToolTip. Then use a watcher to toggle showToolTip true and false based on the value of buttonHovering. Or you can make showToolTip a computed property that always returns the value of buttonHovering. Lastly, bind the disabled attribute of the v-tooltip to the !buttonHovering property to ensure that the tooltip only displays when hovering over the button and not the tooltip's activator.

    new Vue({
      el: '#app',
      data () {       
        return {
          buttonHovering: false,
          showToolTip: false
        }
      },
      watch: {
        buttonHovering (newVal) {
          this.showToolTip = newVal
        }
      }
    })
    <link href='https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons' rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.min.css" rel="stylesheet">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.21/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vuetify@1.5.16/dist/vuetify.js"></script>
    
    
    <div id="app">
      <v-app>
        <v-card>
          <v-card-title>
            <v-hover v-model="buttonHovering">
              <v-btn slot-scope="{ hover }" large>
                Hello
              </v-btn>
            </v-hover>
            <v-spacer></v-spacer>
            <v-tooltip left v-model="showToolTip" :disabled="!buttonHovering">
              <v-icon slot="activator" color="blue lighten-1" large>info</v-icon>
              <span>Hi from over here!</span>
            </v-tooltip>
          </v-card-title>
        </v-card>
      </v-app>
    </div>

    0 讨论(0)
提交回复
热议问题