vue中父组件向子组件传值以及事件传递

父组件向子组件传值

props

1.首先在子组件上定义一个引用,用来引用父组件的值(类似于动态绑定,绑定父组件中的值,然后通过props传给子组件)

2.在子组件中加入props

可以看看这篇文章,来自于官网

https://cn.vuejs.org/v2/guide/components-props.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="lib/vue-2.4.0.js"></script>
</head>
<body>
   <div id="app">
       <com1 v-bind:parentmsg="msg" v-on:func="show" ref="com1"></com1>
       <input type="button" value="获取子组件" @click="getSon">
   </div>
<script>
    com1 = {
        template:'<h3 @click="change">这是父组件{{parentmsg}}</h3>',
        props:['parentmsg'],
        data(){
            return{
                title:'123'
            }
        },
        methods:{
           change(){
               console.log(this.parentmsg);
               this.$emit('func');
           }
        }
    };

    var vm = new Vue({
        el:'#app',
        data:{
            msg:'父组件'
        },
        methods:{
            show(){
                console.log("调用父组件方法");
            },
            getSon(){
                console.log(this.$refs.com1.parentmsg);
                this.$refs.com1.change();
            }
        },
        components:{
            com1
        }
    })
</script>
</body>
</html>

可以看出子组件com1上有一个v-bind:parentmsg="msg",也就是子组件定义parentmsg来引用父组件msg

然后在com1子组件中加入props,这样子组件就可以使用parentmsg。利用这个我们做一个小实例。需求:我们需要把父组件中的movies传递给com1子组件显示,怎么做呢?可以使用props

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
</head>
<body>
<div id="app">
    <com1 v-bind:parentmovies="movies"></com1>
</div>

<!--v-for不能使用在根元素上-->
<template id="com1">
    <div>
        <div v-for="movie in parentmovies">{{movie}}</div>
    </div>
</template>

<script>

    const com1 = {
        template:'#com1',
        props:['parentmovies'],
        data(){
            return{

            }
        },
        methods:{

        }
    };

    var vm = new Vue({
        el:'#app',
        data:{
            movies:['海王','海泽王','李白']
        },
        methods:{

        },
        components:{
            com1
        }
    })
</script>
</body>
</html>

 

父组件向子组件传递事件

同样先在com1子组件中定义v-on:func="show"来引用父组件中的show方法

然后在子组件的点击事件中通过this.$emit('func');来调用父组件的方法

 

使用ref,通过在组件上定义一个ref,这样可以在任何组件中通过this.$refs.定义的ref名即可获得组件引用,通过这个引用可以获取该组件的任何属性,也就是data和调用方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值