美文网首页
Vue 父组件触发子组件事件

Vue 父组件触发子组件事件

作者: BGING | 来源:发表于2019-06-18 13:59 被阅读0次

    早期的 Jquery 编程主要是以事件驱动,Vue 则是直接数据驱动。因此在组件嵌套的时候,没有显示的提供,父组件控制子组件的触发事件。事件控制这一块被弱化了,但是父组件想控制子组件是不是就没有办法了呢?其实不然,Vue 提供了 ref 属性。这样也就可以触发子组件事件。

    实例

    使用 Element UI <el-upload> 做上传文件功能。这里有一个需求是,当我点击上传按钮时候,需要做一个校验。等校验通过后在执行上传功能。

    -- 子组件(这里仅把标签写出来,做示例)
     <el-upload>
      <slot></slot>  
     </el-upload>
    
    -- 父组件(<file-upload> 引入的子组件)
    <file-upload ref="fileupload" >
            <el-button
              @click.stop="btnclick"
              :disabled="fileUploadDisabled"
              size="small"
              type="primary"
            >上传</el-button>
     </file-upload>
    
    
    // 父组件 js 部分
    export default {
      methods:{
            btnclick(){
                 // 父组件触发子组件点击事件,触发上传功能
                this.$refs.fileupload.$refs.upload.$children[0].$el.click();
            }
        }
    }
    

    关键点

    • 给 <el-button> 增加点击事件,并且阻止事件传递。用@click.stop 控制。
    • 给<file-upload> 增加 ref 属性,这样可以直接控制子组件

    相关文章

      网友评论

          本文标题:Vue 父组件触发子组件事件

          本文链接:https://www.haomeiwen.com/subject/hzxfqctx.html