简单易懂的vue父子组件通信实例

父组件向子组件传递数据是通过prop传递的,子组件传递数据给父组件是通过$emit触发事件来做到的。 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="app">

    </div>

    <script src="/vue.js"></script>
    <script>
        Vue.component('child', {
            data() {
                return {
                    mymessage: this.params2
                }
            },
            template: `
            <div>
                <input type="text" v-model="mymessage" @input="passData(mymessage)"> </div>
        `,
            props: ['params2'], //得到父组件传递过来的数据
            methods: {
                passData(val) {
                    //触发父组件中的事件
                    this.$emit('sendChildData', val)
                }
            }
        })
        Vue.component('parent', {
            template: `
            <div>
                <p>this is parent compoent!</p>
                <child :params2="params1" v-on:sendChildData="getChildData"></child>
            </div>
        `,
            data() {
                return {
                    params1: 'hello'
                }
            },
            methods: {
                //执行子组件触发的事件
                getChildData(val) {
                    console.log(val)
                }
            }
        })
        var app = new Vue({
            el: '#app',
            template: `
            <div>
                <parent></parent>
            </div>
        `
        })
    </script>
</body>

</html>

 

代码实现的效果如下:

 

 以上实例实现的操作是父组件先向子组件传递参数params1,子组件接收到数据后将数据绑定到input中显示在页面,如果input数据发生变化,触发子组件中的passData函数,passData函数的作用是:通过$emit触发sendChildData事件,调用父组件中的打印方法,最后将子组件中的数据打印在控制台。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值