首页 > 解决方案 > 带有多个激活器的 Vuetify 对话框

问题描述

我有一个用 vuetify 制作的对话框,并希望它有多个可能的按钮来激活它。这些按钮彼此不同,并且在几个不同的组件中。所以我不能只将对话框组件导入到位置,因为按钮都是相同的,因为它们在对话框中定义:

<v-dialog>
  <template v-slot:activator="{ on, attrs }">
    <v-btn
      v-bind="attrs"
      v-on="on"
    >
      Activate
    </v-btn>
  </template>

  <v-card>
    My Content
  </v-card>
</v-dialog>

有没有办法,而不仅仅是复制组件文件来达到我的目标?

标签: vue.jsdialogvuetify.js

解决方案


您可以创建一个全局模态组件以放置在App.vuev-model中,并使用而不是激活器来触发它。使用v-model全局状态(例如来自 Vuex 等),您可以从任何地方切换:

模态

<template>
  <v-dialog v-model="$store.state.isModal">
    <v-card>
      My Content
    </v-card>
  </v-dialog>
</template>

然后您可以在其他一些组件中切换该状态:

<v-btn @click="$store.dispatch('showModal')">SHOW</v-btn>

这是一个使用Vue.prototypeandVue.observable代替 Vuex 作为全局状态的演示


推荐阅读