91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3如何使用element-plus的dialog

發布時間:2023-05-12 09:16:15 來源:億速云 閱讀:210 作者:zzz 欄目:編程語言

這篇文章主要講解了“vue3如何使用element-plus的dialog”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“vue3如何使用element-plus的dialog”吧!

優點

擺脫繁瑣的 visible 的命名,以及反復的重復 dom。

想法

將 dialog 封裝成一個函數就能喚起的組件。如下:

addDialog({
  title: "測試", //彈窗名
  component: TestVue, //組件
  width: "400px", //彈窗大小
  props: {
    //傳給組件的參數
    id: 0
  },
  callBack: (data: any) => {
    //當彈窗任務結束后,調用父頁面的回掉函數。(比如我新增完成了需要刷新列表頁面)
    console.log("回調函數", data)
  }
})
基于 el-dialog 進行初步封裝
// 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)
}
<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>
  • 首先定義了 dialogList,它包含了所有彈窗的信息。

  • component 使用 componet is 去動態加載子組件

  • addDialog 調用喚起彈窗的函數

  • closeDialog 關閉彈窗的函數

在app.vue中掛載
<script setup>
import Mydialog from "@/components/gDialog/index.vue"
</script>

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

<style scoped>

</style>
使用
創建一個彈窗組件
<!-- 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>
在列表頁面喚醒彈窗
<!-- 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)
    }
  })
}
多層級彈窗嵌套
<!-- 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>

感謝各位的閱讀,以上就是“vue3如何使用element-plus的dialog”的內容了,經過本文的學習后,相信大家對vue3如何使用element-plus的dialog這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安福县| 长顺县| 阜宁县| 北碚区| 阆中市| 炎陵县| 墨江| 仲巴县| 盘锦市| 宁陕县| 盱眙县| 盐亭县| 甘德县| 滦南县| 额尔古纳市| 南京市| 鄂州市| 乡城县| 保山市| 霍城县| 镇原县| 凤凰县| 宜州市| 获嘉县| 尤溪县| 平泉县| 南投市| 象州县| 安达市| 天峻县| 铜鼓县| 轮台县| 蒙阴县| 彩票| 固始县| 孙吴县| 八宿县| 巨鹿县| 罗田县| 志丹县| 乌拉特前旗|