VUE宝典之el-dialog使用

这篇具有很好参考价值的文章主要介绍了VUE宝典之el-dialog使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍁前言

el-dialog是Element UI库中的一个重要组件,用于在Vue应用程序中创建弹出框。它提供了一组实用的属性和事件,让我们能够轻松地实现各种弹出框功能。本文将详细介绍el-dialog组件的使用方法和示例,帮助您更好地理解如何在实际项目中使用它。

🍁el-dialog简介

el-dialog是一个非常灵活的弹出框组件,它可以通过简单的配置来实现各种样式的弹出框。el-dialog组件基于Element UI库,因此在使用之前需要确保已经正确引入了Element UI库。

🍁el-dialog属性

el-dialog提供了许多属性,用于控制弹出框的外观和行为。以下是一些常用的属性:

  • 📒visible:控制弹出框是否可见。
  • 📒title:弹出框的标题。
  • 📒width:弹出框的宽度。
  • 📒fullscreen:是否全屏显示。
  • 📒append-to-body:将弹窗附加到body上。
  • 📒close-on-click-modal:点击蒙层是否关闭弹窗。
  • 📒close-on-press-escape:按下Esc键是否关闭弹窗。
  • 📒show-close:是否显示关闭按钮。
  • 📒draggable:是否可拖动。
  • 📒resizable:是否可调整大小。
    除了以上属性外,el-dialog还支持一些自定义事件,例如:@open、@close等。这些事件可以在组件实例中通过 $emit 方法来触发。

🍁el-dialog示例

下面是一个简单的el-dialog示例,展示了如何使用属性和事件来控制弹出框的行为和样式:

在模板中添加el-dialog组件:
html

<template>  
  <div>  
    <el-button @click="dialogVisible = true">打开弹出框</el-button>  
    <el-dialog :visible.sync="dialogVisible" title="提示" width="30%" @close="dialogVisible = false">  
      <p>这是一段信息</p>  
      <div slot="footer" class="dialog-footer">  
        <el-button @click="dialogVisible = false">取 消</el-button>  
        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>  
      </div>  
    </el-dialog>  
  </div>  
</template>

在脚本中定义数据和方法:

export default {  
  data() {  
    return {  
      dialogVisible: false,  
    };  
  },  
};

在这个示例中,我们通过点击按钮来控制dialogVisible的值,从而打开或关闭弹出框。visible.sync属性用于双向绑定弹出框的可见性。title属性用于设置弹出框的标题。width属性用于设置弹出框的宽度。@close事件用于监听弹出框关闭事件,并在关闭时设置dialogVisible为false。在弹出框的内容部分,我们通过p标签来添加文本。在底部工具栏中,我们通过slot="footer"来定义底部按钮的位置,并通过el-button来添加取消和确定按钮。注意,为了能够正确显示底部工具栏,我们需要在弹出的内容后面添加一个div元素作为底部工具栏的容器,并使用slot="footer"来指定插槽名称。同时,我们还可以根据需要添加其他属性和事件来控制弹出框的行为和样式。例如,我们可以设置fullscreen属性为true来全屏显示弹出框,或者设置draggable属性为true来使弹出框可拖动。同时,我们还可以通过触发自定义事件来实现一些特定的功能,例如在弹出框打开时触发@open事件来执行一些操作。总之,el-dialog组件提供了丰富的属性和事件,让我们可以灵活地实现各种样式的弹出框功能。在实际项目中,我们可以根据具体需求进行配置和使用。

🍁父子组件值传递示例

当el-dialog组件声明在子组件中时,父组件和子组件可以通过props和事件进行相互传递参数。以下是一个代码示例:

  • 父组件(ParentComponent.vue):

html

<template>  
  <div>  
    <child-component ref="childDialog" :initial-message="parentMessage" @child-event="handleChildEvent"></child-component>  
    <el-button @click="openChildDialog">打开子组件的弹出框</el-button>  
  </div>  
</template>  
  
<script>  
import ChildComponent from './ChildComponent.vue';  
  
export default {  
  components: {  
    ChildComponent  
  },  
  data() {  
    return {  
      parentMessage: 'Hello from parent'  
    };  
  },  
  methods: {  
    openChildDialog() {  
      // 通过 $refs 访问子组件实例,并调用 openDialog 方法打开弹出框  
      this.$refs.childDialog.openDialog();  
    },  
    handleChildEvent(childMessage) {  
      // 处理子组件传递的事件和参数  
      console.log('Received message from child:', childMessage);  
      // 可以在这里执行其他逻辑或更新父组件的数据  
    }  
  }  
};  
</script>
  • 子组件(ChildComponent.vue):

html

<template>  
  <div>  
    <el-dialog :visible.sync="dialogVisible" title="子组件的弹出框">  
      <p>{{ message }}</p>  
    </el-dialog>  
  </div>  
</template>  
  
<script>  
export default {  
  props: {  
    initialMessage: {  
      type: String,  
      default: ''  
    }  
  },  
  data() {  
    return {  
      dialogVisible: false, // 控制弹出框的显示与隐藏  
      message: this.initialMessage // 初始化时接收父组件传递的参数  
    };  
  },  
  methods: {  
    openDialog() {  
      // 打开弹出框,并触发父组件的事件传递参数  
      this.dialogVisible = true;  
      this.$emit('child-event', 'Hello from child');  
    },  
    closeDialog() {  
      // 关闭弹出框  
      this.dialogVisible = false;  
    }  
  },  
  watch: {  
    initialMessage(newValue) {  
      // 监听父组件传递的参数变化,并更新子组件的数据  
      this.message = newValue;  
    }  
  }  
};  
</script>

在父组件中,我们使用了ref属性给子组件指定了一个引用名称childDialog,并通过:initial-message="parentMessage"将父组件的数据parentMessage传递给子组件。同时,在父组件的模板中添加了一个按钮,当点击该按钮时,会触发openChildDialog方法,通过$ refs访问子组件实例,并调用子组件的openDialog方法打开弹出框。在父组件的方法handleChildEvent中,我们处理子组件传递的事件和参数,并可以在这里执行其他逻辑或更新父组件的数据。在子组件中,我们定义了一个props属性initialMessage来接收父组件传递的参数,并在初始化时将参数赋值给子组件的message数据属性。子组件的openDialog方法中,我们打开弹出框,并通过$emit触发一个自定义事件child-event,将参数’Hello from child’传递给父组件。同时,我们使用:visible.sync="dialogVisible"来绑定弹出框的显示状态。这样,当dialogVisible的值变化时,弹出框的显示状态也会相应地改变。


🏫博客主页:魔王-T

🥝大鹏一日同风起 扶摇直上九万里

❤️感谢大家点赞👍收藏⭐评论✍️文章来源地址https://www.toymoban.com/news/detail-756839.html

到了这里,关于VUE宝典之el-dialog使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue/Element UI 实现Element UI el-dialog 自由拖动

    前言: 最近有个项目,客户要求弹窗可拖动,但是由于elemen ui本身的弹窗并没有拖动的属性,无法满足客户的需求。 于是我百度找到了几篇文章,终于可以实现客户的需求! 请往下看↓↓ 一、新建一个目录:utils 二、创建drag .js文件 三、创建directive.js 文件 四、main.js文件中

    2024年02月02日
    浏览(37)
  • vue2.x 二次封装element ui 中的el-dialog

    在做后台管理系统的时候,dialog组件是我们使用频率比较高的组件,但是有一些需求现有的组件是不满足的。因此会需要我们做二次封装。 组件本身的属性我们保留,只需要根据需求添加,然后在使用的时候props去拿取使用就可以了。 本次遇到的问题是如何在父组件去控制

    2024年02月07日
    浏览(42)
  • Vue系列第七篇:Element UI之el-main,el-table,el-dialog,el-pagination,el-breadcrumb等控件使用

    本篇实现主页面功能,包括主页面排版布局,学生管理模块实现,后台接口实现等功能。 目录 1.运行效果 1.1登录页面 1.2主页面  1.3学生管理 - 信息列表 1.4学生管理 - 信息管理  1.5学生管理 - 作业列表 1.6学生管理 - 作业管理 2.前端代码 2.1 代码结构  2.2 代码实现 3.后端代码

    2024年02月08日
    浏览(38)
  • Vue | Element UI Plus 完美解决el-dialog双滚动条、页面抖动问题

    解决因为滚动条隐藏导致的窗口抖动问题: (添加 :lock-scroll=\\\"false\\\" 属性)(无效的话把冒号去掉试试) 解决双滚动条问题: (无效的话去掉deep) 参考: http://t.csdnimg.cn/xavOG

    2024年04月25日
    浏览(54)
  • Vue项目element-ui弹窗组件el-dialog、el-drawer,阻止点击遮罩层关闭

    效果图: 我们只需要设置这两个 属性 append-to-body :close-on-click-modal=“false” 注意 : 这里的close-on-click-modal属性前需要写入 :

    2024年02月12日
    浏览(46)
  • Vue3 el-dialog 二次封装踩坑实录(v-model moduleValue 不触发)

    如果你封装了一个el-dialog的子组件,想通过父组件v-model的形式调用,切记不能使用v-model,要使用 v-model:[你的参数],例如 v-model:visible

    2024年04月27日
    浏览(19)
  • el-loading在el-dialog上使用

    全局loading 使用v-loading指令方式,因为Dialog的最外层元素是全屏,故遮罩为全屏。 局部loading 使用服务方式时,传入dialog DOM 节点,遮罩在dialog处。

    2024年02月14日
    浏览(30)
  • el-dialog中使用el-form子组件传数据问题

    需求:在父组件中点击后显示el-dialog,el-dialog中使用了子组件,并需要向子组件传form数据。 如果先传值 this.$refs.child.childFile(obj); ,再让 this.dialogFormVisible = true; ,则会出现childFile方法undefined。 但是即使是先 this.dialogFormVisible = true; 也会是方法undefined。因为 在Vue.js中,视图更

    2024年01月15日
    浏览(36)
  • el-dialog嵌套使用,只显示遮罩层的问题

    我是不建议嵌套使用的,平级也能调用,层级是按点击顺序的 这两个方法还是有用的,比如跳转其他页面保留el-dialog显示状态,可以使用 如果有用,请给我点赞收藏,我会很开心,谢谢

    2024年01月19日
    浏览(44)
  • el-dialog的内容不刷新;el-dialog内容有缓存;el-dialog里面的组件不刷新问题;

    el-dialog里面的内容是带缓存的,也就是说除了第一次打开会初始化,其他次打开都是直接加载缓存的; 这就导致了有时候打开弹框时候,内容不刷新。 有说法说是el-dialog嵌套太深大致的。 解决方法:直接给弹框的内容部分添加v-if

    2024年02月14日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包