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

Element UI中el-dialog作为子组件如何由父组件控制显示/隐藏~

1、这里介绍的是将el-dialog作为组件封装便于复用,如何通过父组件控制子组件dialog的显示与隐藏。

2、思路:首先el-dialog是通过dialogVisible的值是否为true或false来控制显示与隐藏的。那么我们可以通过父传子props来将true(即showFlag的值)传递给dialog子组件,然后在子组件中监听showFlag值的变化,一旦出现变化就将showFlag的值赋值给dialogVisible,以此来实现dialog组件的显示。

如何控制隐藏呢?或者说如何实现二次点击显示?

思路:首先我们通过子传父$emit传递一个自定义事件hiddenFlag给父组件,然后在父组件中触发该方法,将showFlag的值变为false即可。

3、还有一种方法就是通过给子组件添加v-if来控制,根据个人爱好来选择吧。

4、封装dialog子组件。

<template><el-dialogtitle="添加商品":visible.sync="dialogVisible"width="40%":before-close="handleClose"style="text-align: center; line-height: 20px"><el-form:model="ruleForm":rules="rules"ref="ruleForm"label-width="100px"class="demo-ruleForm"><el-form-item label="活动名称" prop="newName"><el-input v-model="ruleForm.newName"></el-input></el-form-item><el-form-item label="活动日期" required><el-form-item prop="newData"><el-date-pickertype="date"placeholder="选择活动日期"v-model="ruleForm.newData"style="width: 100%"></el-date-picker></el-form-item></el-form-item><el-form-item label="活动地址" prop="newAddress"><el-input v-model="ruleForm.newAddress"></el-input></el-form-item><el-form-item label="爱好" prop="newLikes"><el-input v-model="ruleForm.newLikes"></el-input></el-form-item></el-form><span slot="footer" class="dialog-footer"><el-button @click="Cancel()">取 消</el-button><el-button type="primary" @click="determine()">确 定</el-button></span></el-dialog>
</template>
<script>
export default {name: "diaLog",data() {return {dialogVisible: false,ruleForm: {newName: "",newAddress: "",newData: "",newLikes: "",},rules: {newName: [{ required: true, message: "请输入活动名称", trigger: "blur" },],newAddress: [{ required: true, message: "请选择活动区域", trigger: "blur" },],newData: [{type: "date",required: true,message: "请选择日期",trigger: "change",},],newLikes: [{ required: true, message: "请输入爱好", trigger: "blur" }],},};},props: ["showFlag"],watch: {// 监听父组件传递过来的showFlag的变化,控制dialog的显示showFlag() {this.dialogVisible = this.showFlag;},},methods: {// 关闭弹窗handleClose(done) {done();this.$emit("hiddenFlag");},//   取消Cancel() {this.$emit("hiddenFlag");},//   确定determine() {this.$emit("hiddenFlag");},},
};
</script><style></style>

5、使用子组件。

<template><div><el-button type="primary" @click="addGoods()">添加商品</el-button><!-- 对话框 --><diaLog :showFlag="showFlag" @hiddenFlag="hidden()"></diaLog></div>
</template><script>
import diaLog from "../components/dialog.vue";
export default {name: "newUser",data() {return {showFlag: false,};},components: {diaLog,},methods: {// 添加商品addGoods() {// 展示弹窗this.showFlag = true;},// 接收dialog组件传递过来的隐藏弹窗信息hidden() {this.showFlag = false;}},
};
</script><style></style>

效果图:

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

相关文章:

  • 【vue讲解:es6导入导出语法、 vue-router简单使用、登录跳转案例、scoped的使用、elementui使用】
  • #beego的orm一直引入失败#
  • Vue插值:双大括号标签、v-text、v-html、v-bind 指令
  • 实验五之用Processing绘画
  • Apache CloudStack Official Document 翻译节选(七)
  • 动态创建 Delphi 按钮的完整指南:基于配置文件的 `TGridPanel` 实现
  • 【设计模式】工厂模式和抽象工厂模式
  • 【xilinx】Versal Adaptive SoC DDRMC - NoC QoS 选项卡未出现
  • 融合创新:EasyCVR视频汇聚平台云计算技术与AI技术共筑雪亮工程智能防线
  • keepalived的技术原理及其在负载均衡场景中的应用
  • 树的重心 by江河湖海
  • MySQL存储过程深入指南
  • 牛客算法小题
  • 小米SU7销量超特斯拉,新车明年上半年发布
  • 基于Java语言的光伏监控系统+光伏发电预测+光伏项目+光伏运维+光伏储能项目
  • unity json 处理
  • 如何使用DataGear零编码快速制作MQTT物联网实时数据看板
  • Mysql查询日志
  • Airtest 的使用
  • Android更改包名和签名
  • tortoisegit下载及其使用流程
  • Anrdoir 13 关于设置静态IP后,突然断电,在上电开机卡动画
  • multimodel ocr dataset
  • 兼容并蓄,高效集成:EasyCVR视频综合接入能力助力多元化项目需求
  • linux 部署YUM仓库及NFS共享服务
  • LCD 显示字符
  • NOI2003 逃学的小孩 题解
  • 硬件服务器操作系统的选择:Linux 还是 Windows?
  • dataV组件使用——数据更新更新组件
  • solana合约编写