vue + element 父子组件实现弹框的显示隐藏,使用watch监听

使用场景:当需要添加内容时,比如在页面添加新的信息,需要用到弹框,在一个页面中直接使用,会使页面代码可读性不够好,我们就为此用组件封装使用,但刚开始用时碰到的问题就是怎么控制弹框的显示与隐藏呢,对于新手就是一脸懵逼,各种百度,遇到各种问题,主要是对组件传值不够深入了解,下面是我写的代码的案例。
使用:使用watch来监听弹框的显示或者隐藏,并把弹框的字段发送到父组件实现异步的操作。

父组件:

<template>
      <el-button
        class="btn"
        type="primary"
        icon="el-icon-plus"
        plain
        @click="openDialog()"
      >
        绑定域名
     </el-button>
  <!-- dialog -->
    <domain-dialog
      :show.sync="isShowDialog"
      @addNewDomain="createNewDomain"
    />
  </div>
</template>

<script>
import DomainDialog from './dialog/DomainDialog'

export default {
  name: 'AppDomain',
  components: {
    DomainDialog
  },
  data() {
    return {
      isShowDialog: false
    }
  },
 methods: {
  // 打开申请域名配置对话框
    openDialog() {
      this.isShowDialog = true
    },
  // 申请域名异步操作
    createNewDomain(domainForm) {
      this.loading = true
      createDomain(domainForm).then(res => {
       // do something
      }).catch(err => {
        this.loading = false
        //  do something
        console.log('err', err)
      })
      this.isShowDialog = false
    },
}
</script>

子组件

<template>
  <el-dialog
    :visible.sync="visible"
    title="绑定域名"
    width="40%"
    center
    @close="OnClose()">
    <el-form
      ref="domainValidateForm"
      :model="addDomainForm"
      :rules="formRules"
      status-icon
    >
    ...// something code
  </el-form>
  <div slot="footer" class="dialog-footer">
      <el-button @click="OnClose">取 消</el-button>
      <el-button type="primary" @click="OnSubmit(addDomainForm)">确 定</el-button>
   </div>
</template>

<script>
export default {
  name: 'TemplateDialog',
  props: {
    show: { type: Boolean, default: false }, // 弹框可见标志
  },
  data() {
      return {
          // 弹框可见否标记
          visible: this.show,
          addDomainForm: {
              appName: '',
              ingressName: '',
              url: '',
              path: ''
          },
      }
  },
watch: {
    // 监听show,visible 随着show变化而变化
    show: {
      immediate: true,
      handler(show) {
        this.visible = show
      }
    }
  },
  methods: { 
  //重置表单
    OnReset() {
      this.$refs.domainValidateForm.resetFields()
    },
    // 关闭弹框
    OnClose() {
      this.$emit('update:show', false)  // 子组件更新弹框隐藏
      this.OnReset()
    },
  // 提交表单
    OnSubmit() {
      // console.log(this.addDomainForm)
      this.$refs.domainValidateForm.validate((valid) => {
        if (valid) {
          // 域名拼接
          this.addDomainForm.url = this.addDomainForm.url + this.ingressPoint
          this.$emit('addNewDomain', this.addDomainForm)
        } else {
          this.$message.info('请正确填写表单')
          return false
        }
      })
    }
  }
  }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,093评论 4 62
  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 25,794评论 1 12
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,206评论 0 25
  • 话题:为什么你一定要学会写作 你是否也是想写作却迟迟没有开始,你是否也想做到日更只是苦于没有“灵感”,没有“素材”...
    卷卷皮阅读 243评论 3 4
  • 我在经历一场暴风雨 雨停之后我已不堪 《秋兴》不高兴 我以为丛菊能开满山 等着天晴之后架起一道桥 我又开始追着影子...
    琦二哥哥阅读 299评论 5 3