vue父子组件之间的数据传递

父组件传值

在vue中,子组件中默认无法访问到父组件中data的数据和methods中的方法。
通过属性绑定(v-bind)的形式 可以把父组件的数据传递给子组件

<div id='app'>
	<!-- com1:子组件-->
    <com1 :parentmsg='msg'></com1>
</div>
 var vm = new Vue({
        el: '#app',
        data: {
            msg: "---父组件中的数据---"
        }
        components: {
            com1: {
                data: function () {
                    return {
                        title: '123',
                        content: '啦啦啦'
                    }
                },
                template: "<h1>这是子组件{{parentmsg}}</h1>",
                props: [ 
                // 在子组件props属性中,定义父组件需要传递的数据
                    'parentmsg'
                ]
            }
        }
    })

子组件中data 和 props 区别1,data是子组件自身私有的,而props存放的是父组件传递过来的
子组件中data 和 props 区别2,data是可读可写的,而props是只读的

子组件调用父组件方法并传递数据给父组件
<div id='app'>
        <!-- 当我们自定义了一个事件属性之后,子组件就能够通过某些方式来调用了 -->
        <!-- 将父组件的show方法绑定给子组件 -->
        <com2 @func='show'></com2>
    </div>

    <template id='templ'>
        <div>
        	<!-- 子组件将在myclick方法中调用父组件方法 -->
            <input type="button" value="点击触发父组件的show方法" @click='myclick'>
            <h1>这是子组件</h1>
        </div>
    </template>
 var com2 = {
        template: '#templ', 
        data: function () {
            return {
                sondata: { name: '红猫', flag: '七剑之首' }
            }
        },
        methods: {
            myclick() {
                this.$emit("func", this.sondata)
                 // emit 代表触发调用的意思,将子组件中的data数据传递给父组件
            }
        }
    }

    var vm = new Vue({
        el: '#app',
        data: {
            msg: "父组件中的数据",
            dataFromSon: null
        },
        methods: {
            show(data) {
                this.dataFromSon = data;
                console.log(this.dataFromSon)
            }
        },
        components: {
            com2: com2
        }
    })
使用$refs获取DOM元素
	<div id='app'>
        <input type="button" value="获取元素" @click='getElement'>
        <h1 id='myh1' ref='myh1'>今天天气好好</h1>
    </div>
 var vm = new Vue({
        el: '#app',
        methods: {
            getElement() {
                console.log(this.$refs.myh1.innerHTML)  // 使用ref获取dom元素
            }
        }
    })
使用$refs 获取组件

在父组件中,通过$refs获取子组件后,可以使用子组件的data数据和methods方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值