zoukankan      html  css  js  c++  java
  • elementUI 的el-dialog作为子组件,父组件如何控制其关闭的按钮

    这里有三点需要说明:

    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按钮,关闭弹窗
        } 

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

  • 相关阅读:
    springcloud 依赖包报错解决
    牛客题集:练习赛67、68
    建立虚点?一类暴力连边会超时的最短路问题
    牛客题集:练习赛69、70
    牛客题集:练习赛71、72
    牛客题集:练习赛74、75
    2021icpc training camp contest2
    牛客题集:练习赛76
    C.Skyscrapers
    Mac brew安装postgresql问题
  • 原文地址:https://www.cnblogs.com/mmzuo-798/p/11908138.html
Copyright © 2011-2022 走看看