一般第一次打开浏览器,偶尔出现打开弹窗会出现弹窗页面成白条!报弹窗子组件找不到,necktie 和延迟 都不行!
是一直打不开弹窗,不是第二次点击就可以了,但刷新下浏览器就可以了!
求能解惑!
推测应该是dom未渲染完成 就去显示dom导致,
<el-dialog :close-on-click-modal="false" title="详情" :visible.sync="pageVisible" width="1200px">
<detail-modal ref="pageRef" @cancel="ecgPageCancel"></detail-modal>
</el-dialog>
this.pageVisible = true
this.$nextTick(() => {
this.$refs.pageRef.init() // init是定义在子组件的方法,作数据初始化
})
这个和父子组件的加载执行顺序是有一定的关系的
父created->子created->子mounted->父mounted
看下你的异步数据加载或者组件的 获取数据执行时机?
如果是你在 父created、mounted里面写了 ajax请求,子组件在created、mounted中 依赖父组件 created 请求回来的数据去进行加载 你要了解的是 异步不一定会依据你的组件执行时机去走,因为本身 created 并不会因为你的异步请求而暂停,也就是你的子组件 created 、mounted等不一定会抓取的到父组件created 中 ajax 返还回来的数据
再有就是关于 请求延迟的问题 ,参照楼上
可以把ajax请求数据放置到外部,完成后 再去显示子组件,因为你的子组件写法不规范的话获取数据还是会有不同步的问题
或者你可以在子组件中使用 watch 去监听 props [data]项
再或者你直接在子组件当中去请求
最后如果都不是这些原因的话 放下你的源码 看下控制台 打不开页面 不排除你的请求报错,代码出问题等,排查一下吧
两步走,白条应该是弹窗里动态组件没加载,你动态组件v-if 或者v-show=true,你刷新页面看出不出来。如果出的来,你把v-if 的判断放el-dialog就好了