在開發前端頁面的時候,彈窗是非常常見的交互方式。而在 Vue 中,彈窗的使用也很便利。本篇文章將會詳細介紹 Vue 中彈窗的傳值。
在 Vue 中,我們通常使用第三方庫或組件來實現彈窗功能。比如常用的 Element.UI 組件庫中有著 Modal 彈窗組件。當我們需要在彈窗中使用到父組件中的數據時,我們就需要傳值。
// 模板代碼 <template> <div> <el-button @click="showDialog">打開彈窗</el-button> <child-dialog v-bind:dialogVisible="dialogVisible" v-on:closeDialog="closeDialog" /> </div> </template> <script> import ChildDialog from './ChildDialog.vue'; export default { components: { ChildDialog }, data() { return { dialogVisible: false }; }, methods: { showDialog() { this.dialogVisible = true; }, closeDialog() { this.dialogVisible = false; } } }; </script>
在我們的父組件中,我們聲明了一個初始值為 false 的 dialogVisible 變量,并定義了 showDialog 和 closeDialog 方法來設置和關閉彈窗。在模板中,我們使用 el-button 組件來觸發 showDialog 方法,并在 child-dialog 中綁定了 dialogVisible 變量。
// ChildDialog.vue 組件模板代碼 <template> <el-dialog :visible.sync="dialogVisible" :title="title"> <div class="content"> <p>{{ message }}</p> </div> <div slot="footer" class="dialog-footer"> <el-button @click="handleClose">取 消</el-button> <el-button type="primary" @click="handleConfirm">確 定</el-button> </div> </el-dialog> </template> <script> export default { props: { dialogVisible: { type: Boolean, required: true } }, data() { return { title: '彈窗標題', message: '彈窗內容' }; }, methods: { handleClose() { this.$emit('closeDialog'); }, handleConfirm() { // 處理彈窗確認事件 } } }; </script>
在子組件 ChildDialog.vue 中,我們通過 props 接收父組件傳遞過來的 dialogVisible 變量,并將其綁定到 el-dialog 的 visible 屬性上。同時,我們定義了 handleClose 和 handleConfirm 方法,用于關閉彈窗和進行彈窗確認操作。其中,在 handleClose 方法中我們通過 $emit 方法向父組件發送 closeDialog 消息,來關閉彈窗。
通過這樣的方式傳值,我們可以很方便地在 Vue 中使用彈窗,而且可以完成彈窗傳值的操作。當然,在具體的使用過程中,我們還可以通過細節的調整來滿足更加復雜的業務需求。
上一篇vue tab欄講解
下一篇vue 快速開發模板