• 触发Dialog中子组件方法,找不到方法问题


    触发Dialog中子组件方法,找不到方法问题

    问题来源

    在做项目的时候我在父组件中放置一个dialog,dialog中又存放了子组件,当打开dialog的时候同时触发子组件中的方法,但是就在这个时候,它报了一个找不到子组件中方法的错误

    问题原因

    是因为DOM元素还没有渲染完成导致的,当我们把dialog的visible属性设置为true的时候,子组件正在加载,这个对话框及其里边的DOM元素是有一个渲染的过程的,所以这个时候就可能拿不到里面的元素

    解决方法

    使用nextTick()方法

    nextTick()方法的作用:将回调延迟到DOM 更新循环之后执行。在修改数据时立即使用它,然后等待 DOM 更新,便可达到获取 更新后的节点 的目的。简单来说就是当界面完全渲染完之后,在进行操作。

    如果不了解nextTick方法的可以点击这个链接 : nextTick()用法总结

    我的解决方法:

    <--! 在vue界面的watch属性中监控 dialogFormVisible 属性,放它发生改变时 界面打开dialog进行渲染,这个时候想拿到渲染完成之后的initParamHtmlSS方法,所以就把调用子组件方法写在this.$nextTick的回调函数里,而this.$nextTick回调函数是界面完全渲染完成以后调用,这样就一定能拿到子组件中的方法 -->
    watch: {
        dialogFormVisible(value) {
          this.$nextTick(function() {
            if (value) {
    		<--!这是我要调用子组件中的方法-->
              this.$refs.paramDrawRef.initParamHtmlSS() // 前后加遮罩
            }
          })
        }
      }
    
  • 相关阅读:
    easyui datagrid 前后台代码
    JVM
    序列化
    Android UI设计
    多线程
    泛型
    字符串
    B+树:MySql数据库索引是如何实现的
    大数据判存算法:海量数据中快速判断某个数据是否存在
    陌生单词
  • 原文地址:https://www.cnblogs.com/blackblack/p/13921351.html
Copyright © 2020-2023  润新知