美文网首页
Vue子组件调用父组件的方法

Vue子组件调用父组件的方法

作者: 不付好时光 | 来源:发表于2019-06-28 21:45 被阅读0次

    在实际的开发当中我们会经常用到子组件调用父组件方法
    Vue中子组件调用父组件的方法,这里有三种方法提供参考
    第一种方法是直接在子组件中通过this.parent.event来调用父组件的方法 父组件 <template> <div> <child></child> </div> </template> <script> import child from '@/components/demo/child'; export default { components: { child }, methods: { fatherMethod() { console.log('test下'); } } }; </script> 子组件 <template> <div> <button @click="childMethod()">点击</button> </div> </template> <script> export default { methods: { childMethod() { this.parent.fatherMethod();
    }
    }
    };
    </script>

    第二种方法是在子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了!

    <template>
    <div>
    <child @fatherMethod="fatherMethod"></child>
    </div>
    </template>
    <script>
    import child from '@/components/demo/child';
    export default {
    components: {
    child
    },
    methods: {
    fatherMethod() {
    console.log('test');
    }
    }
    };
    </script>
    子组件
    <template>
    <div>
    <button @click="childMethod()">点击</button>
    </div>
    </template>
    <script>
    export default {
    methods: {
    childMethod() {
    this.$emit('fatherMethod');
    }
    }
    };
    </script>

    第三种是父组件把方法传入子组件中,在子组件里直接调用这个方法
    <template>
    <div>
    <child :fatherMethod="fatherMethod"></child>
    </div>
    </template>
    <script>
    import child from '@/components/demo/child';
    export default {
    components: {
    child
    },
    methods: {
    fatherMethod() {
    console.log('test');
    }
    }
    };
    </script>
    子组件
    <template>
    <div>
    <button @click="childMethod()">点击</button>
    </div>
    </template>
    <script>
    export default {
    props: {
    fatherMethod: {
    type: Function,
    default: null
    }
    },
    methods: {
    childMethod() {
    if (this.fatherMethod) {
    this.fatherMethod();
    }
    }
    }
    };
    </script>
    三种方式都可以 根据自己的需要采用 嗯 常来哦

    相关文章

      网友评论

          本文标题:Vue子组件调用父组件的方法

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