Table of Contents
Advantages
Idea
Based on el-dialog for preliminary encapsulation
Mounted in app.vue
Use
to create a pop-up window component
Wake up the pop-up window on the list page
Multi-level pop-up window nesting
Home Web Front-end Vue.js How to use element-plus's dialog in vue3

How to use element-plus's dialog in vue3

May 11, 2023 pm 09:13 PM
vue3 element-plus dialog

Advantages

Get rid of the cumbersome naming of visible and repeated dom.

Idea

Encapsulate the dialog into a component that can be evoked by a function. As follows:

addDialog({
  title: "测试", //弹窗名
  component: TestVue, //组件
  width: "400px", //弹窗大小
  props: {
    //传给组件的参数
    id: 0
  },
  callBack: (data: any) => {
    //当弹窗任务结束后,调用父页面的回掉函数。(比如我新增完成了需要刷新列表页面)
    console.log("回调函数", data)
  }
})
Copy after login

Based on el-dialog for preliminary encapsulation

// index.ts
import { reactive } from "vue"
type dialogOptions = {
  title: string
  component: any
  props?: Object
  width: string
  visible?: any
  callBack?: Function
}
export const dialogList: dialogOptions[] = reactive([])

export const addDialog = (options: dialogOptions) => {
  dialogList.push(Object.assign(options, { visible: true }))
}

export const closeDialog = (item: dialogOptions, i: number, args: any) => {
  dialogList.splice(i, 1)
  item.callBack && item.callBack(...args)
}
Copy after login
<template>
  <Teleport to="body">
    <el-dialog
      v-for="(item, index) in dialogList"
      :key="index"
      :title="item.title"
      :width="item.width"
      v-model="item.visible"
    >
      <component :is="item.component" v-bind="item.props" @close="(...args:any) => closeDialog(item, index, args)" />
    </el-dialog>
  </Teleport>
</template>

<script setup lang="ts">
  import { dialogList, closeDialog } from "./index"
</script>
Copy after login
  • First define the dialogList, which contains the information of all pop-up windows.

  • component Use component is to dynamically load sub-components

  • addDialog calls the function that evokes the pop-up window

  • closeDialog function to close the pop-up window

Mounted in app.vue

<script setup>
import Mydialog from "@/components/gDialog/index.vue"
</script>

<template>
 <router-view />
 <Mydialog></Mydialog>
</template>

<style scoped>

</style>
Copy after login

Use

to create a pop-up window component

<!-- test.vue -->
<template>
  父弹窗
  <el-button type="primary" @click="openChildDialog">打开子dialog</el-button>
  <el-button type="primary" @click="closeDialog">关闭弹窗</el-button>
</template>

<script setup lang="ts">
  import { addDialog } from "@/components/gDialog/index"
  import childVue from "./child.vue"
  const props = defineProps(["id"])
  console.log(props.id, "props")
  const emit = defineEmits(["close"])
  const closeDialog = () => {
    emit("close", 1, 2, 34)
  }
  const openChildDialog = () => {
    addDialog({
      title: "我是子dialog",
      width: "500px",
      component: childVue
    })
  }
</script>
Copy after login

Wake up the pop-up window on the list page

<!-- list.vue -->
<template>
  列表页
  <el-button type="primary" @click="openDialog">打开dialog</el-button>
</template>
<script setup lang="ts">
import { addDialog } from "@/components/gDialog/index"
import TestDialog from "./test.vue"
const openDialog = () => {
  addDialog({
    title: "我是dialog",
    width: "500px",
    props:{
      id:0
    }
    component: TestDialog,
    callBack: (data: any) => {
      //当弹窗任务结束后,调用父页面的回掉函数。(比如我新增完成了需要刷新列表页面)
      console.log("回调函数", data)
    }
  })
}
Copy after login

Multi-level pop-up window nesting

<!-- child.vue -->
<template>
  子弹窗
  <el-button type="primary" @click="closeDialog">关闭弹窗</el-button>
</template>

<script setup lang="ts">
  import { addDialog } from "@/components/gDialog/index"
  const emit = defineEmits(["close"])
  const closeDialog = () => {
    emit("close", 1, 2, 34)
  }
</script>
Copy after login

The above is the detailed content of How to use element-plus's dialog in vue3. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to implement table editability and row selection through vue and Element-plus How to implement table editability and row selection through vue and Element-plus Jul 17, 2023 am 09:43 AM

How to implement table editability and row selection through vue and Element-plus Introduction: Tables are one of the frequently used components when developing web applications. Table editability and row selection functions are very common and practical requirements. In the Vue.js framework, these two functions can be easily achieved by combining the Element-plus component library. This article will introduce how to implement table editability and row selection functions through Vue and Element-plus, and provide corresponding code examples. 1. Project accuracy

How to use vue and Element-plus to implement step-by-step forms and form verification How to use vue and Element-plus to implement step-by-step forms and form verification Jul 17, 2023 pm 10:43 PM

How to use Vue and ElementPlus to implement step-by-step forms and form verification. In web development, forms are one of the most common user interaction components. For complex forms, we often need to perform step-by-step filling and form verification functions. This article will introduce how to use Vue and ElementPlus framework to achieve these two functions. 1. Step-by-step form A step-by-step form refers to dividing a large form into several small steps, and users need to fill in the steps according to the steps. We can take advantage of Vue’s componentization and routing

vue3+vite: How to solve the error when using require to dynamically import images in src vue3+vite: How to solve the error when using require to dynamically import images in src May 21, 2023 pm 03:16 PM

vue3+vite:src uses require to dynamically import images and error reports and solutions. vue3+vite dynamically imports multiple images. If vue3 is using typescript development, require will introduce image errors. requireisnotdefined cannot be used like vue2 such as imgUrl:require(' .../assets/test.png') is imported because typescript does not support require, so import is used. Here is how to solve it: use awaitimport

How to use vue and Element-plus to implement upload and download file functions How to use vue and Element-plus to implement upload and download file functions Jul 18, 2023 pm 12:28 PM

How to use Vue and ElementPlus to implement file upload and download functions Introduction: In web applications, file upload and download functions are very common. This article will introduce how to use Vue and ElementPlus to implement file upload and download functions. Through the sample code, you can easily and intuitively understand how to use Vue and ElementPlus to implement these functions. 1. Install and import ElementPlus. Install ElementPlus in the Vue project.

How to refresh partial content of the page in Vue3 How to refresh partial content of the page in Vue3 May 26, 2023 pm 05:31 PM

To achieve partial refresh of the page, we only need to implement the re-rendering of the local component (dom). In Vue, the easiest way to achieve this effect is to use the v-if directive. In Vue2, in addition to using the v-if instruction to re-render the local dom, we can also create a new blank component. When we need to refresh the local page, jump to this blank component page, and then jump back in the beforeRouteEnter guard in the blank component. original page. As shown in the figure below, how to click the refresh button in Vue3.X to reload the DOM within the red box and display the corresponding loading status. Since the guard in the component in the scriptsetup syntax in Vue3.X only has o

How to use vue and Element-plus to implement message notifications and pop-up prompts How to use vue and Element-plus to implement message notifications and pop-up prompts Jul 17, 2023 pm 10:42 PM

Introduction to how to use Vue and ElementPlus to implement message notifications and pop-up prompts: In web application development, message notifications and pop-up prompts are one of the very important functions. As a popular front-end framework, Vue, combined with ElementPlus, an excellent UI library, can easily implement various pop-up prompts and message notification functions. This article will introduce how to use the ElementPlus component library in a Vue project to implement message notification and pop-up prompt functions, and attach relevant code examples.

How to use vue and Element-plus to export and print data How to use vue and Element-plus to export and print data Jul 18, 2023 am 09:13 AM

How to use Vue and ElementPlus to implement data export and print functions. In recent years, with the rapid development of front-end development, more and more web applications need to provide data export and print functions to meet users' diverse needs for data use. As a popular JavaScript framework, Vue can easily implement data export and printing functions when used with the ElementPlus component library. This article will introduce a data export and

How to use vue and Element-plus to implement image cropping and rotation functions How to use vue and Element-plus to implement image cropping and rotation functions Jul 19, 2023 pm 07:04 PM

How to use Vue and ElementPlus to implement image cropping and rotation functions Introduction: As web applications have higher and higher requirements for user experience, image processing has become a part that cannot be ignored. As a popular JavaScript framework, Vue, combined with ElementPlus, an excellent UI component library, provides us with a wealth of tools and functions to quickly and easily crop and rotate images. This article will be based on Vue and ElementPlus to introduce you to

See all articles