想搞一個新增編輯彈窗,和列表頁面分開
先來一個父組件調用子組件彈窗的demo
父組件
<template> <div> <el-button @click="show">按鈕</el-button> <!-- 新增編輯彈框子組件 --> <add-or-update :addOrUpdateVisible="addOrUpdateVisible" @changeShow="showAddOrUpdate" ref="addOrUpdateRef"></add-or-update> </div> </template> <script> // 引入子組件 import AddOrUpdate from './Edit' export default { data(){ return{ // 控制新增編輯彈窗的顯示與隱藏 addOrUpdateVisible: false } }, // 使用子組件 components:{ AddOrUpdate }, methods:{ // 按鈕點擊事件 顯示新增編輯彈窗組件 show(){ this.addOrUpdateVisible = true }, // 監聽 子組件彈窗關閉后觸發,有子組件調用 showAddOrUpdate(data){ if(data === 'false'){ this.addOrUpdateVisible = false }else{ this.addOrUpdateVisible = true } } } } </script>
子組件:
<template> <el-dialog title="提示" :visible.sync="showDialog" width="50%" @close="handleClose"> <span>這是一段信息</span> <span slot="footer" class="dialog-footer"> <el-button @click="showDialog = false">取 消</el-button> <el-button type="primary" @click="showDialog = false">確 定</el-button> </span> </el-dialog> </template> <script> export default { // 接受父組件傳遞的值 props:{ addOrUpdateVisible:{ type: Boolean, default: false } }, data(){ return{ // 控制彈出框顯示隱藏 showDialog:false } }, methods:{ // 彈出框關閉后觸發 handleClose(){ // 子組件調用父組件方法,並傳遞參數 this.$emit('changeShow','false') } }, watch:{ // 監聽 addOrUpdateVisible 改變 addOrUpdateVisible(oldVal,newVal){ this.showDialog = this.addOrUpdateVisible }, } } </script> <style lang="less" scoped> </style>