如何优雅的优化封装ElementUI el-dialog 弹框


  1. 组件内部声明关闭变量
    :visible.sync=”visible”

  2. 组件内部声明关闭方法
    @close=”DialogClose”

  3. 监控父级关闭变量关闭当前
    this.visible = this.DialogVisibleFlag

  4. 异步更新父级关闭变量
    this.$emit(“update:DialogVisibleFlag”, false)

  1. <template>
  2. <el-dialog
  3. :show-close="true"
  4. :visible.sync="visible"
  5. :close-on-click-modal="false"
  6. @close="DialogClose">
  7. // some content
  8. <div slot="footer" class="dialog-footer">
  9. <el-button type="primary" plain @click="DialogClose">取消</el-button>
  10. <el-button type="primary" @click="onConfirm">确定</el-button>
  11. </div>
  12. </el-dialog>
  13. </template>
  14. <script>
  15. export default {
  16. // ....
  17. return {
  18. visible: false,
  19. },
  20. watch: {
  21. DialogVisibleFlag() {
  22. this.visible = this.DialogVisibleFlag // 2. 监控父级关闭变量关闭当前
  23. }
  24. },
  25. methods: {
  26. DialogClose() {
  27. this.$emit("update:DialogVisibleFlag", false) // 4.异步更新父级关闭变量
  28. }
  29. }
  30. }
  31. </script>