前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题

今天写VUE时我在element-ui的el-dialog组件中包含了一个子组件。

前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题_第1张图片
Editor为子组件

然后我通过$refs调用该子组件里面的方法,在控制台上却显示undefined。

前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题_第2张图片
init方法为dialog弹窗时才会触发的方法
前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题_第3张图片
'setHtml' of undefined"

因为自己之前用过refs来调用子组件方法,但是没有遇到过这种问题,很是无奈加之彷徨。

后来在度娘怀里遨游一番,发现和element-ui框架有关系,总之什么关系呢,我也说不清啦。

直接看解决方法吧。

首先,你要确保你的e-dialog组件内已经加了回调函数  @open(具体使用方法点击查看element-ui官方文档


前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题_第4张图片
@open=“init()”

然后在methods里的init方法内改造之下面这个样子啦:

前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题_第5张图片
this.$nextTick(()=>{ xxxxxx })

其实就是加上一个this.$nextTick啦,这个回调函数的意思呢,其实简单理解就是等所有的DOM元素节点都渲染完成以后才执行其里面的方法。具体什么意思呢,请参考百度,这里就不做详细介绍了。


前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题_第6张图片
打印出了formData.content

这样就打印出了formData.content的内容啦。

完美解决!!!

你可能感兴趣的:(前端踩坑小结:当element-ui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题)