useDialogPluginComponent

TIP

useDialogPluginComponent 组合式函数是 Quasar Dialog 插件(调用自定义组件)的一部分。如果您还没有深入了解过它,请先在那里进行初步阅读。

这个组合式用于 Dialog 插件调用自定义组件,它会提供组件与插件之间所有必要的通讯。

用法

import { useDialogPluginComponent } from 'quasar'

setup() {
  const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()

  // dialogRef      - 一个应用于 QDialog 的 Vue ref
  // onDialogHide   - 用作处理 QDialog 上 @hide 事件的函数
  // onDialogOK     - 用于处理对话框 "ok" 结果的函数
  //                    示例: onDialogOK() - 无载荷参数
  //                    示例: onDialogOK({ /*.../* }) - 带有载荷参数
  // onDialogCancel - 用于处理对话框 "cancel" 结果的函数

  return {
    dialogRef,
    onDialogHide,
    onDialogOK,
    onDialogCancel
  }
}

完整示例

<template>
  <!-- 注意这里的 dialogRef -->
  <q-dialog ref="dialogRef" @hide="onDialogHide">
    <q-card class="q-dialog-plugin">
      <!--
        ... 内容
        ... 使用 q-card-section ?
      -->

      <!-- 按钮控件示例 -->
      <q-card-actions align="right">
        <q-btn color="primary" label="OK" @click="onOKClick" />
        <q-btn color="primary" label="Cancel" @click="onCancelClick" />
      </q-card-actions>
    </q-card>
  </q-dialog>
</template>

<script>
import { useDialogPluginComponent } from 'quasar'

export default {
  props: {
    // ...您的自定义 props
  },

  emits: [
    // 必须的; 需要声明一些您的组件会通过 useDialogPluginComponent() 触发的事件
    ...useDialogPluginComponent.emits
  ],

  setup () {
    // 必须的; useDialogPluginComponent 只能在 setup() 内调用
    const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()
    // dialogRef      - 一个应用于 QDialog 的 Vue ref
    // onDialogHide   - 用作处理 QDialog 上 @hide 事件的函数
    // onDialogOK     - 用于处理对话框 "ok" 结果的函数
    //                    示例: onDialogOK() - 无载荷参数
    //                    示例: onDialogOK({ /*.../* }) - 带有载荷参数
    // onDialogCancel - 用于处理对话框 "cancel" 结果的函数

return {
      // 这是必需的;
      // 需要将这些( useDialogPluginComponent() 中的内容)
      // 注入到 vue 范围内,以供 vue html 模板使用
      dialogRef,
      onDialogHide,

      // 我们在 vue html 模板中使用的其他方法;
      // 这些是我们示例的一部分(因此不是必需的)
      onOKClick() {
        // 在点击确定时,必须
        // 调用 onDialogOK(可选载荷参数)
        onDialogOK()
        // 或者使用载荷参数:onDialogOK({ ... })
        // ...并且它还会自动隐藏对话框
      },

      // 我们可以直接传递 onDialogCancel
      onCancelClick: onDialogCancel
    }
  }
}
</script>