网络编程 发布日期:2025/10/31 浏览次数:1
vue如何一打开子组件弹窗都刷新?
在父页面中给子组件同时绑定:visible.sync和v-if
:visible.sync="paramAddDialog" v-if="paramAddDialog"
整体代码:
<el-dialog title="绑定其他更多的账户" width="1200px" align="center" :visible.sync="paramAddDialog" v-if="paramAddDialog"> <addParamForm ref="addParam" @boundSuccess="boundSuccess" @cancelBound="paramAddDialog=false"/> </el-dialog>
OK:
PS:下面看下VUE 父组件调用子组件弹窗
想搞一个新增编辑弹窗,和列表页面分开
先来一个父组件调用子组件弹窗的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>
总结