element ui点击按钮弹出款_VUE+elementUI 点击页面空白处弹窗不隐藏

点击空白处不隐藏弹窗,点击弹窗里的‘x’和取消按钮关闭弹窗。

os:人家都是让点击空白处隐藏弹窗,为啥我们的需求有点另类?!木有办法~大佬有需求,小小程序员只能领命。。。

话说,element的el-dialog组件是不是自身带有,点击页面空白隐藏弹窗的功能(反正我没写,点击空白时,小弹窗童鞋就自己隐身了~),也没有深究,来上解决需求的代码~

data() {

return {

compactDialog: false // 弹窗隐藏

}

},

mounted() {

const that = this // 存一下this(因为下面的点击事件等于又包了一层),this要保证指向当前页面

document.addEventListener('click', function(e) {

// 点击空白处让弹窗状态为显示

that.compactDialog = true

})

// this.$refs.dialog.$refs.dialog vue获取dom

// 至于为什么写这么长,是因为this.$refs.dialog获取的是弹窗遮罩(遮罩100%全屏覆盖),如果在这阻止默认事件,就把document点击事件给阻止了,

// 所以this.$refs.dialog.$refs.dialog 获取的是弹窗的内容层,这样点击里面的‘x’和取消按钮就可以关闭弹窗了

this.$refs.dialog.$refs.dialog.addEventListener('click', function(e) {

e.stopPropagation() // 阻止冒泡

})

},

啰嗦了,不过是切身体会,该章节完结。。。

出的b页面中,可以通过`mounted()`生命周期函数或`created()`生命周期函数来监听父组件传来的事件,从而控制b和c按钮的显隐性。 具体方法如下: 1. 在b页面的`<template>`标签中定义b和c按钮,并分别设置不同的`class`或`id`属性,如下所示: ```html <template> <div> <button id="btn-b">按钮B</button> <button id="btn-c">按钮C</button> </div> </template> ``` 2. 在b页面的`<script>`标签中,定义一个布尔型变量`showBtn`,并定义一个方法`hideBtns`来控制b和c按钮的显隐性: ```javascript <script> export default { data() { return { showBtn: true } }, methods: { hideBtns() { this.showBtn = false; } } } </script> ``` 3. 在父页面中,通过`this.$refs`来调用子组件的方法。在点击a按钮时,触发一个方法,该方法调用子组件的`hideBtns()`方法,从而隐藏b和c按钮: ```html <template> <div> <button @click="showDialog">出对话框</button> <el-dialog title="对话框" :visible.sync="dialogVisible" width="30%"> <b-page ref="bPage"></b-page> </el-dialog> </div> </template> <script> import BPage from './BPage.vue' export default { components: { BPage }, data() { return { dialogVisible: false } }, methods: { showDialog() { this.dialogVisible = true; this.$nextTick(() => { this.$refs.bPage.hideBtns(); }); } } } </script> ``` 在以上代码中,我们通过`this.$nextTick()`方法来确保在出对话框后再调用子组件的方法。通过以上方法,我们可以在点击a按钮时隐藏b和c按钮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值