动态创建的Dialog默认挂载在<body>标签下,这样就无法使用全局的Provide和Inject。 Dialog如何挂载在div#app下或者挂载在parent下?
<body>
div#app
您可以使用 app.provide() 在 Vue app 上设置提供 而不是 <App/> 组件。例如在入口脚本中
app.provide()
app
<App/>
import { createApp } from 'vue' import { Quasar, Dialog } from 'quasar' import App from './App.vue' createApp(App) .provide('name', value) .use(Quasar, { plugins: { Dialog, } }) .mount('#app')
然后,您将能够在 Quasar 对话框子项中使用 inject() 相同的项目,即使该对话框安装在 <body> 下。
inject()
它总是安装在 <body> (非 SSR)下或无处安装(SSR 模式) - 不仅仅是“默认情况下”。只需查看来源 - https://github.com/quasarframework/quasar/blob/dev/ui/src/utils/private/global-nodes.js#L6
您可以使用
app.provide()
在 Vueapp
上设置提供 而不是<App/>
组件。例如在入口脚本中然后,您将能够在 Quasar 对话框子项中使用
inject()
相同的项目,即使该对话框安装在<body>
下。它总是安装在
<body>
(非 SSR)下或无处安装(SSR 模式) - 不仅仅是“默认情况下”。只需查看来源 - https://github.com/quasarframework/quasar/blob/dev/ui/src/utils/private/global-nodes.js#L6