这里有三点需要说明:

1. 使用:before-close="closeHandle" 将其 $emit() 出去

2. 取消按钮 也需要$emeit出去

3. 控制对话框显示隐藏的变量需要props给父组件来传值,这个相当重要,不然控制不了对话框的显示隐藏

4.1,2步骤是为了在子组件不再重复操作显示隐藏的变量,vue会报错

现在看代码:

对话框子组件:

<el-dialog
:title="dialogTitle"
:visible.sync="createDialog"
width="544px"
center
custom-class="dialogStyle"
:before-close="handleClose">
<el-form ref="pushForm" label-position="right" :model="pushForm" :rules="Rules" label-width="100px">
<el-form-item label="URL" prop="url">
<el-input placeholder="请输入URL链接" clearable v-model="pushForm.url"></el-input>
</el-form-item>
<el-form-item label="备注" prop="depicts">
<el-input
type="textarea"
:rows="4"
placeholder="请输入备注内容(255字符以内)"
v-model="pushForm.depicts"
maxlength="255">
</el-input>
</el-form-item>
<el-form-item label="是否启用" prop="isEnable">
<el-radio-group v-model="pushForm.isEnable">
<el-radio :label="0">启用</el-radio>
<el-radio :label="1">禁用</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="submitPushForm">确 定</el-button>
</div>
</el-dialog>
export default {
name: '',
props: {
title: {
type: String,
default: ''
},
createDialog: {
type: Boolean
}
// pushDataList: {
// type: Array,
// // default: []
// }
}, ....
methods: {
addDialog (sign, item) {
// this.createDialog = true
this.$emit('opendialog')
this.dialogTitle = sign + this.title
this.typeNum = item.type
this.reMark = sign
},
editDialog (sign, item) {
// this.createDialog = true
this.$emit('opendialog')
this.dialogTitle = sign + this.title
this.typeNum = item.type
this.reMark = sign
},
submitPushForm () {
this.$refs.pushForm.validate((valid) => {
if (valid) {
console.log(this.pushForm)
this.pushForm.type = this.typeNum
if (this.reMark === '添加') {
this.$emit('addPushHandle', this.pushForm)
} else if (this.reMark === '编辑') {
this.$emit('updatePushHandle', this.pushForm)
}
} else {
console.log('error submit!')
}
})
},
handleClose () {
this.$emit('closeDialog') // 取消和 x 按钮的事件,防止重复操作createDialog变量
 }, }

父组件:

<push-data :title="title" :createDialog="createDialog" @opendialog="opendialog" @addPushHandle="addPushHandle" @updatePushHandle="updatePushHandle" @closeDialog="closeHandle"></push-data>

data () {
return {
title: '应用推送',
createDialog: false
}
},
methods: {
opendialog () {
this.createDialog = true
},
addPushHandle (form) {
// console.log('添加应用推送')
// console.log(form)
// console.log(this.applicationId)
let params = Object.assign({},form,{applicationId: this.applicationId})
console.log(params)
this.createDialog = false // 亲测。操作dialog可以生效
},
updatePushHandle (form) {
console.log('编辑应用推送')
applicationPushUpdate().then((res) => { }).catch((err) => { })
},
closeHandle () {
this.createDialog = false // 控制取消和X按钮,关闭弹窗
}

以上就是个人总结,如果小伙伴有更好的方法,欢迎留言交流哦!!!^_^

elementUI 的el-dialog作为子组件,父组件如何控制其关闭的按钮的更多相关文章

  1. vue 组件-父组件传值给子组件

    父组件通过属性,传值给子组件,子组件通过,props数组里的名称来接受父组件传过来的值. HTML部分: <div id="app"> <tmp1 :parent ...

  2. Angular组件——父组件调用子组件方法

    viewChild装饰器. 父组件的模版和控制器里调用子组件的API. 1.创建一个子组件child1里面只有一个greeting方法供父组件调用. import { Component, OnIni ...

  3. vue2.0 子组件 父组件之间的传值

    常用的子组件给父组件传值/调父组件方法 //子组件let val = "";//可以是任意类型this.$emit('fatherFun', val); //父组件<fath ...

  4. vue 【 子子组件 => 子组件 => 父组件 】 的事件和参数的传递

    1,子子组件  TodoItem.vue     <template>   <div class="todo-item" :class="{'is-co ...

  5. 学以致用 ---- vue子组件→父组件通信

    之前写过一篇关于 vue2.0中v-on绑定自定义事件 的随笔,但是今天实际应用的时候才发现根本就不理解,下面是实际工作中遇到的问题: [情景描述]页面中的[下拉搜索组件],因为多个页面中用到,所以抽 ...

  6. vuejs2.0子组件改变父组件的数据

    在vue2.0之后的版本中,不允许子组件直接改变父组件的数据,在1.0的版本中可以这样操作的,但是往往项目需求需要改变父组件的数据,2.0也是可一个,区别是,当我们把父元素的数据给子组件时,需要传一个 ...

  7. vue父组件访问子组件

    1.父组件(父组件访问子组件的方法drop) <!--父组件访问子组件的方法v-ref:shopcart--> <template> <div id="pare ...

  8. Vue父组件向子组件传值以及data和props的区别

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xukongjing1/article/ ...

  9. Vue父组件像子组件传值--自定义属性

    这里有个注意的地方,Vue实例控制app DIV 大组件,我们在div中天加小组件的时候,传值需要创建自定义的属性 之后在通过props:[‘属性名’] 来把父元素data中的数据传递给子组件 < ...

随机推荐

  1. WPF弹出进度条

    环境:vs2015 ,.net 4.6 源码地址:https://pan.baidu.com/s/1FoujUMst1luomPf0ZfCLUQ 提取码:trzj 说明: 1.进度条是在winFrom ...

  2. scrapy爬虫中间件-urlLength

    浏览器里面能输入的最大url是有限制的 safari 最多 一万多 ie最少  2083 urllength中间件源码 谷歌和火狐正常 八千多 """ Url Lengt ...

  3. springboot2.1.3使用mvn site遇到的坑及解决方案

    本人要使用mvn site命令生成一些项目报告,如:***.html文件,但是在命令运行时,时常报如下错误: 一开始还以为是 jar包冲突引起的,把相关依赖引用的jackson-module-scal ...

  4. Pthon魔术方法(Magic Methods)-上下文管理

    Pthon魔术方法(Magic Methods)-上下文管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上下文管理方法 __enter__: 进入与此对象相关的上下文.如果 ...

  5. redis发布订阅实现各类定时业务(优惠券过期,商品不支付自动撤单,自动收货等)

    修改redis配置文件找到机器上redis配置文件conf/redis.conf,新增一行  notify-keyspace-events Ex 最后的Ex代表 监听失效的键值 修改后效果如下图 代码 ...

  6. Ceph添加、删除osd及故障硬盘更换

    添加或删除osd均在ceph部署节点的cent用户下的ceph目录进行. 1. 添加osd 当前ceph集群中有如下osd,现在准备新添加osd: (1)选择一个osd节点,添加好新的硬盘: (2)显 ...

  7. Echo团队Alpha冲刺随笔 - 第八天

    项目冲刺情况 进展 程序基本完成,根据实际,添加完善新接口 问题 根据功能对接出现的问题继续进行改进 心得 放假了放松下 今日会议内容 黄少勇 今日进展 测试小程序,添加异常和错误操作的处理 存在问题 ...

  8. Echo团队Alpha冲刺随笔 - 第九天

    项目冲刺情况 进展 已经进入测试阶段,正在消除系统的bug 问题 通过测试,找出了系统中存在的较多bug...... 体会 测试太重要了,很多原本以为没什么bug,一测就能找到好几个,而且改个bug真 ...

  9. 大数据之路week07--day07 (Hive结构设计以及Hive语法)

    Hive架构流程(十分重要,结合图进行记忆理解)当客户端提交请求,它先提交到Driver,Driver拿到这个请求后,先把表明,字段名拿出来,去数据库进行元数据验证,也就是Metasore,如果有,返 ...

  10. 软帝学院:java多线程知识点分享

    1.进程和线程: 进程:正在进行的程序.每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元. 线程:进程内部的一条执行路径或者一个控制单元. 两者的区别: 一个进程至少有一个线程 ...