当前位置: 首页 > news >正文

如何对element弹窗进行二次封装

方式一使用$refs

个人比较喜欢用这种的 通过$refs打开的同时 还能给弹窗组件传参 一些框架使用的也是这种方式

父组件

<template><div><el-button type="text" @click="handleDialogOpen">打开嵌套表单的 Dialog</el-button><Dialog ref="Dialog"></Dialog></div>
</template><script>
import Dialog from '@/components/Dialog.vue'
export default {components: {Dialog},data() {return {}},methods: {handleDialogOpen() {this.$refs.Dialog.open('打开弹窗')}},mounted() {}
}
</script><style lang="less" scoped></style>

子组件

<template><el-dialog title="收货地址" :visible.sync="dialogFormVisible"><el-form :model="form"><el-form-item label="活动名称" :label-width="formLabelWidth"><el-input v-model="form.name" autocomplete="off"></el-input></el-form-item><el-form-item label="活动区域" :label-width="formLabelWidth"><el-select v-model="form.region" placeholder="请选择活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="dialogFormVisible = false">确 定</el-button></div>
</el-dialog>
</template><script>
export default {data () {return {dialogFormVisible: false,form: {name: '',region: '',date1: '',date2: '',delivery: false,type: [],resource: '',desc: ''},formLabelWidth: '120px'}},methods: {open(value) {console.log(value, '父组件传递过来的值')this.dialogFormVisible = true}}
}
</script><style lang="scss" scoped></style>

方式二 封装弹窗内的内容 弹窗组件直接放在父组件中

父组件

<template><div><el-button type="text" @click="handleDialogOpen">打开嵌套表单的 Dialog</el-button><el-dialog title="收货地址" :visible.sync="dialogFormVisible"><dialogForm/></el-dialog></div>
</template><script>
import dialogForm from '@/components/form.vue'
export default {components: {dialogForm},data() {return {dialogFormVisible: false}},methods: {handleDialogOpen() {this.dialogFormVisible = true}},mounted() {}
}
</script><style lang="less" scoped></style>

子组件

<template><el-form :model="form"><el-form-item label="活动名称" :label-width="formLabelWidth"><el-input v-model="form.name" autocomplete="off"></el-input></el-form-item><el-form-item label="活动区域" :label-width="formLabelWidth"><el-select v-model="form.region" placeholder="请选择活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item></el-form>
</template><script>
export default {data () {return {form: {name: '',region: '',date1: '',date2: '',delivery: false,type: [],resource: '',desc: ''},formLabelWidth: '120px'}},methods: {open(value) {console.log(value, '父组件传递过来的值')this.dialogFormVisible = true}}
}
</script><style lang="scss" scoped></style>

其他方式可自行探索

http://www.lryc.cn/news/226731.html

相关文章:

  • 【微服务专题】手写模拟SpringBoot
  • 七个优秀微服务跟踪工具
  • redis 问题解决 1
  • odoo16前端框架源码阅读——启动、菜单、动作
  • C/C++(a/b)*c的值 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • CIFAR-100数据集的加载和预处理教程
  • C#,数值计算——函数计算,Eulsum的计算方法与源程序
  • ChatGLM3 langchain_demo 代码解析
  • asp.net学院网上报销系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
  • ElasticSearch知识点
  • STM32 GPIO
  • Electron 开发页面应用
  • CSDN写博文的128天
  • Linux学习教程(第二章 Linux系统安装)1
  • vue2手机项目如何使用蓝牙功能
  • 魔兽服务器学习-笔记1
  • 代码随想录day60|84.柱状图中最大的矩形
  • 常见面试题-分布式锁
  • vue开发 安装一些工具
  • Vue.js 组件 - 自定义事件
  • 深度学习 python opencv 火焰检测识别 计算机竞赛
  • PHP中传值与引用的区别
  • Go常见数据结构的实现原理——map
  • 第二十五节——Vuex--历史遗留
  • 大数据Doris(二十一):数据导入演示
  • [100天算法】-面试题 04.01.节点间通路(day 72)
  • linux_day02
  • OpenCV-Python小应用(九):通过灰度直方图检测图像异常点
  • 关于el-table+el-input+el-propover的封装
  • 基于Python+OpenCV+SVM车牌识别系统-车牌预处理系统