场景:
vue + elementUI的项目。
dialog弹窗内包含表单,表单需要必填校验。
关闭弹窗或者再次打开弹窗前需要重置表单和重置校验(不显示上次的红色提示)
遇到的问题:
当直接使用 this.$refs[ref].resetFields() 会报错
官方解释:
Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot 不会被渲染到 DOM 上。因此,如果需要执行 DOM 操作,或通过 ref 获取相应组件,请在 open 事件回调中进行。
在下次 DOM 更新循环结束之后执行延迟回调。
this.$nextTick(()=>{
this.$refs['dialogRef'].methodName()
})