el-dialog中使用el-form子组件传数据问题

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

需求:在父组件中点击后显示el-dialog,el-dialog中使用了子组件,并需要向子组件传form数据。

<el-dialog width="50%" title="对象信息" :visible.sync="dialogFormVisible" @close="closedialog">
	<UploadFile ref="child"></UploadFile>
</el-dialog>

方法...
this.dialogFormVisible = true;
this.$refs.child.childFile(obj);
...

如果先传值this.$refs.child.childFile(obj);,再让this.dialogFormVisible = true;,则会出现childFile方法undefined。
但是即使是先this.dialogFormVisible = true;也会是方法undefined。因为
在Vue.js中,视图更新是异步的。当你修改了数据,Vue.js并不会立即更新DOM,而是在下一个事件循环中执行更新。这种异步更新的机制可以提高性能,因为它允许Vue.js在一次事件循环中批量处理多个数据变更。
this.$refs.child.childFile(obj);是同步代码,视图还没更新时,这行代码已经执行了,所以仍然是方法undefined。
当你设置 this.dialogFormVisible = true; 打开对话框时,对话框组件的DOM可能尚未完全渲染和挂载。因此,如果你尝试立即访问子组件的方法,可能会遇到子组件尚未准备好的问题。

解决方案:

1.使用this.$nextTick

this.dialogFormVisible = true;
this.$nextTick(() => {
  this.$refs.child.childFile(obj);
})

先设置为true,然后再调用子组件的方法。

this.$nextTick:在下次 DOM 更新循环结束之后执行延迟回调。所以就衍生出了这个获取更新后的DOM的Vue方法。所以放在Vue.nextTick()回调函数中的执行的应该是会对DOM进行操作的 js代码;
nextTick(),是将回调函数延迟在下一次dom更新数据后调用,简单的理解是:当数据更新了,在dom中渲染后,自动执行该函数。
vue.nextTick()方法的使用详解(简单明了)

2.使用setTimeout

this.dialogFormVisible = true;
setTimeout(() => {
	this.$refs.child.childFile(obj);
});

调用方法变成了异步代码。

拓展

1.父组件用props把参数(id)传递给子组件使用的,但是props传参是异步的

2.el-dialog 组件会监听 visible 的状态,当状态为 true 时,立刻触发 open 事件,但这个时候 el-dialog__body 的内容还没有渲染。因为 Vue 组件通过 $emit 触发的事件并不是异步执行的,而是同步执行。
Element UI Dialog 组件中执行 DOM 操作异常问题的分析与处理

3.resetFields() 函数重置时,初始化的值是啥就重置成初始的数据。文章来源地址https://www.toymoban.com/news/detail-791674.html

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

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

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

相关文章

  • el-dialog对话框子组件的关闭

    在子组件对话框中 用:before-close关闭对话框,取消按键绑定点击事件 子组件把\\\"close\\\"事件传给父组件  父组件中@close接收子组件传来的“close”事件 

    2024年02月12日
    浏览(29)
  • (el-Form)操作(不使用 ts):Element-plus 中 Form 表单组件校验规则等的使用

    1、 Element-plus 提供 Form 表单组件情况: 其一、 Element-plus 自提供的 Form 代码情况为(示例的代码): 代码地址( 直接点击下面 url 跳转 ):https://element-plus.gitee.io/zh-CN/component/form.html#自定义校验规则 其二、页面的显示情况为: 2、目标想修改后的情况: // 此时虽然页面的样式有些变

    2024年02月13日
    浏览(43)
  • vue3使用响应式数据 + v-model导致响应式失效el-form表单无法输入的问题

    参考文章 重构vue2项目时发现的问题,原始项目使用的是 Element-ui 。 其实vue3可以使用适配的 Element-plus 问题描述 el-form表单无法输入 控制台报错 Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfront in the data option. 使用响应式变量时应先声明 解决办法

    2024年02月15日
    浏览(31)
  • 如何使用element-ui相关组件如:el-select,el-table,el-switch,el-pagination,el-dialog

    element-ui 官方链接: 组件 | Element https://element.eleme.cn/#/zh-CN/component/installation userTypeOptions后端响应的对象数组数据 表格中添加模板的作用域实现 异步处理 监听status的状态 权限修改异步处理: 几个监听函数与异步请求 axios实现发送异步请求 监听弹窗

    2024年02月07日
    浏览(41)
  • el-form组件如何清除校验提示(前端技能提升)

    在切换radio切换的时候校验提示提示出来了,本身不应该出来但是如何取消呢?因为在切换时候我们置空但是并没有取消校验,所以从通过到拒绝置空时候肯定会出现提示语,那么我们把提示校验的方法去掉就行了。       我们在页面切换的时候使用同一个Form组件,我们就需

    2024年02月04日
    浏览(27)
  • el-form验证问题

    1.如果第一次打开el-dialog有验证失败,重新打开el-dialog仍然会有验证失败 解决方案: 给el-dialog绑定close事件,并调用clearValidate() 2.手动控制验证状态 error:错误信息 validate-status:验证状态。 success 验证成功, error验证失败, validating验证中,\\\'\\\'未验证 3.编辑界面验证这行数据

    2024年01月18日
    浏览(31)
  • 在el-dialog编辑界面el-upload跳动问题

    el-dialog中有子组件el-upload,并且做了只能显示一个文件的限制 这是因为之前打开的dialog中,文件仍旧在,新一次的打开的文件把上一次顶掉了,所以产生跳动。 解决方案: 在dialog中绑定关闭事件,清空el-upload的文件列表。 因为动画效果增加了height,导致el-dialog的滚动条出现

    2024年02月02日
    浏览(25)
  • element ui中父子组件共用一个el-dialog弹窗,切换组件页面弹窗进行关闭

    在Element UI中,如果多个父子组件共用一个el-dialog弹窗,并且需要在切换组件页面时关闭弹窗,你可以考虑以下方法来实现: 在Vuex中创建一个状态来管理弹窗的显示状态(例如,showDialog)。 在父子组件中都可以访问这个状态,以便共享。 当需要打开或关闭弹窗时,分发对应

    2024年02月03日
    浏览(52)
  • 基于element-ui el-dialog组件封装,可缩放+可移动的弹窗组件

    源码下载 改组件继承el-dialog组件百分之95属性,可直接对el-dialog进行替换。在项目中我的命名为: vue代码 :搞成组件,路径随意,推荐统一放在组件目录下 拖动及缩放操作js代码: 将skdialog.js注册为指令: 目录: 指令使用:(v-指令名称(SkDialogDrag)) 效果图: 注:吃水

    2024年02月03日
    浏览(45)
  • 【Element】el-dialog 内使用 el-image 并添加 preview-src-list 预览,拖拽导致图片预览不完整问题

    el-dialog 内使用 el-image 并添加 preview-src-list 预览,拖拽导致图片预览不完整 添加 preview-teleported 属性,官方对这个的解释是: image-viewer 是否插入至 body 元素上。 嵌套的父元素属性会发生修改时应该将此属性设置为 true 解决el-image在el-dialog内预览展示不全

    2024年02月16日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包