vue父组件中引入子组件,子组件slot插槽中写入另一个子组件,如何获取另一个子组件$emit传到父组件的值?

发布于 2022-09-11 20:25:22 字数 479 浏览 8 评论 0

示例代码如下:
父组件:

<div>
    <child>
       <child-two @getlist='getList'></child-two>
    </child>
</div>

methods:{
    getList(val){
       console.log(val)  //这里获取不到,
    }
}

子组件 child:

<div><slot></slot></div>

子组件child-two:

<div></div>
methods:{
    rowClick(row){
       this.$emit('getlist',row.list)
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

つ低調成傷 2022-09-18 20:25:22

组件数据通信常用的有三种方式,属性传递,事件传递,或者vue store。你上面写法看起来没问题,可能是你没触发rowClick,或者触发了传递参数为空。
下面是正确的demo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>created by jsdt</title>
    <script src="./vue2.2.6.js"></script>
</head>
<body>
<script type="text/x-template" id="child">
    <div><slot></slot></div>
</script>

<script type="text/x-template" id="child-two">
    <div @click="rowClick">test</div>
</script>

<div id="example">
    <div>
        <child>
            <child-two @getlist='getList'></child-two>
        </child>
    </div>

</div>
</body>
<script>
    Vue.component('child', {
        template: '#child'
    })
    Vue.component('child-two', {
        template: '#child-two',
        methods:{
            rowClick(row){
                this.$emit('getlist','rowclick')
            }
        }
    })
    var vm = new Vue({
        el: '#example',
        methods:{
            getList(val){
                console.log(val) 
            }
        }
    })
</script>
</html>
赤濁 2022-09-18 20:25:22

能说下你这样写是为了实现什么功能吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文