vue 孙组件调用父组件的方法

通过组件内的 @ 传递方法名称,可以实现孙组件调用父组件。

代码如下:

index.html

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="/framework/vue-2.7.16.min.js"></script>
    <script src="/framework/httpVueLoader.min.js"></script>
    <title>孙组件调用父组件的方法</title>
</head>
<body>
    <div id="vue2x">
        <h2> 萨瓦迪卡 </h2>
        <item-m1>这里是父组件</item-m1>
    </div>
    <script>
        var vm = new Vue({
            el: '#vue2x',
            data: { val: 123 },
            components: { "item-m1": httpVueLoader('m1.vue') }
        });
    </script>
</body>
</html>

父组件 m1.vue

html 复制代码
<template>
    <div class="sr">
        <slot></slot>
        <!-- 在子组件标签中用 @ 语法糖向子组件传递方法 -->
        <item-m2 @call-parent-method="parentMethod">这里是子组件</item-m2>
    </div>
</template>

<script>
module.exports = {
    methods: {
        parentMethod() {
            console.log('父组件的方法被调用');
        }
    },
    components: { "item-m2": httpVueLoader('m2.vue') }
}
</script>
<style scoped>
.sr {
    display: flex;
    border: 1px solid #467c46;
    padding: 15px;
    margin: 15px;
}
</style>

子组件 m2.vue

html 复制代码
<template>
    <div class="sr">
        <slot></slot>
        <item-m3 @call-grandparent-method="grandparentMethod">这里是孙组件</item-m3>
    </div>
</template>

<script>
module.exports = {
    methods: {
        grandparentMethod() {
            // 触发父组件的方法
            this.$emit('call-parent-method');
        }
    },
    components: { "item-m3": httpVueLoader('m3.vue') }
}
</script>

孙组件 m3.vue

html 复制代码
<template>
    <div class="sr">
        <slot></slot>
        <button @click="callM1Method">调用父组件</button>
    </div>
</template>

<script>
module.exports = {
    methods: {
        callM1Method() {
            this.$emit('call-grandparent-method');
            console.log('显示来自父组件的参数:',vm.val);
        }
    }
}
</script>

效果如下

相关推荐
国科安芯6 小时前
航天电子模拟前端三大支柱:精密运放、高速运放与电压监控的协同设计方法——ASL8522S/ASL622S/ASL706S技术解析
前端·单片机·嵌入式硬件·fpga开发·架构·安全性测试
牧濑红莉7 小时前
网络安全竞赛pwn全解及第一道ai的wp
javascript·.net
神明不懂浪漫7 小时前
【第四章】CSS(二)——文本外观属性与复合选择器
前端·css·经验分享·笔记
kyriewen7 小时前
别再用AI debug了——这5种bug越修越烂
前端·javascript·ai编程
星释8 小时前
鸿蒙智能体开发实战:39.鸿蒙壁纸大师 - 前端卡片显示与交互优化
前端·华为·交互·harmonyos·鸿蒙·火山引擎
顾昂_9 小时前
内存泄漏排查和 Chrome DevTools 使用教程
前端·javascript·面试
IT_陈寒10 小时前
Java线程池这个坑我算是踩明白了
前端·人工智能·后端
An_s10 小时前
rust开发wasm与浏览器(js)交互
javascript·rust·wasm
山河木马10 小时前
GPU自动处理专题4-填充覆盖区域(光栅化)
javascript·webgl·计算机图形学
悦儿遥遥雨110 小时前
PXE + Kickstart 无人值守批量部署系统
linux·javascript·nginx