您好,登錄后才能下訂單哦!
這篇文章主要介紹“vue3+element-plus Dialog對話框的使用與setup寫法是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“vue3+element-plus Dialog對話框的使用與setup寫法是什么”文章能幫助大家解決問題。
方式一:通過v-model
的方式實現子組件的顯示與隱藏
父組件的內容
<template> <div> <el-button @click="open">打開</el-button> <Child v-model:visible="flag" ></Child> </div> </template> <script> import { ref, watch } from 'vue' import Child from "../components/Child.vue" export default { components: { Child }, setup() { const flag = ref(false) const open = () => { flag.value = true } watch(() => flag.value , (val) => { console.log("監聽flag值得變化:", val) }) return { flag, open } } } </script>
子組件內容
<template> <div class="hello"> <el-dialog title="提示" v-model="dialogVisble" width="30%" :before-close="close"> <span>這是一段信息</span> <template #footer> <span class="dialog-footer"> <el-button @click="close">取 消</el-button> <el-button type="primary" @click="confirm">確 定</el-button> </span> </template> </el-dialog> </div> </template> <script> import { ref, watch } from 'vue' export default { props: { visible: { type: Boolean, default: false } }, setup(props, ctx) { const dialogVisble = ref(false) const close = () => { ctx.emit("update:visible", false); }; const confirm = () => { console.log('你點擊了確定按鈕') ctx.emit("update:visible", false); } watch(() => props.visible, (val) => { console.log(props.visible, val); dialogVisble.value = val }); return { dialogVisble, confirm, close } } } </script>
方式二:通過為元素綁定ref
的方式實現子組件的顯示與隱藏
父組件的內容
<template> <div> <el-button @click="open">打開</el-button> <Child ref="visibleDialog"></Child> </div> </template> <script> import { ref } from 'vue' import Child from "../components/Child.vue" export default { components: { Child }, setup() { const visibleDialog = ref(null) const open = () => { visibleDialog.value.dialogVisble = true } return { visibleDialog, open } } } </script>
子組件內容
<template> <div class="hello"> <el-dialog title="提示" v-model="dialogVisble" width="30%" :before-close="close"> <span>這是一段信息</span> <template #footer> <span class="dialog-footer"> <el-button @click="close">取 消</el-button> <el-button type="primary" @click="confirm">確 定</el-button> </span> </template> </el-dialog> </div> </template> <script> import { ref } from 'vue' export default { setup(props, ctx) { const dialogVisble = ref(false) const confirm = () => { console.log('你點擊了確定按鈕') dialogVisble.value = false } const close = () => { dialogVisble.value = false } return { dialogVisble, confirm, close } } } </script>
2. setup
語法糖寫法 父組件
<template> <Child :user="user" ref="visiableDialog"></Child> <el-button type="primary" @click="openDialog">打開彈窗</el-button> </template> <script setup> import { reactive, ref } from 'vue' import Child from "../components/childComponents.vue" const visiableDialog = ref(null) const user = reactive({ name: '張三', age: 20 }) function openDialog() { visiableDialog.value.dialogVisble = true console.log(visiableDialog.value.dialogVisble); } </script>
子組件
<template> <div class="hello">{{ `${props.user.name}在學習VUE3` }}</div> <el-dialog title="提示" v-model="dialogVisble" width="30%"> <span>這是一段信息</span> <template #footer> <span class="dialog-footer"> <el-button @click="close">取 消</el-button> <el-button type="primary" @click="confirm">確 定</el-button> </span> </template> </el-dialog> </template> <script setup> import { ref } from 'vue'; import { ElMessageBox } from 'element-plus' // 定義控制彈窗顯隱的變量 const dialogVisble = ref(false) // 接受父組件傳過來的值 // const props = defineProps({ // user: { // type: Object, // default: {} // } // }) // 或者 const props = defineProps(['user']) function confirm() { ElMessageBox.confirm('確定關閉嗎?').then(() => { console.log('你點擊了確定按鈕') dialogVisble.value = false }).catch(() => { }) } function close() { dialogVisble.value = false } // 將變量暴露出來 defineExpose({ dialogVisble }) </script>
關于“vue3+element-plus Dialog對話框的使用與setup寫法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。