Vue 父子组件的访问方式

2020-05-13  本文已影响0人  稳小情

父组件访问子组件:使用 children 或refs

  1. $children使用的不多,只有想拿到所有子组件的时候才会用
  2. $refs =>对象类型,默认是一个空的对象
    下面则是实例!
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app">
        <cpn></cpn>
        <cpn></cpn>
        <cpn ref="aaa"></cpn> <!--ref=aaa可以指定!而children是想拿到所有子组件的时候才会用--->
        <button @click="dianji">点击</button>
    </div>
    <template id="cpn">
        <div>我是子组件</div>
    </template>
    <script>
        
        var vm = new Vue({
            el:"#app",
            data:{
                
            },
            methods:{
                dianji:function(){
                    console.log(this.$refs.aaa.name) //父子访问子组件
                }
            },
            components:{
                cpn:{
                    template:'#cpn',
                    data(){
                        return{
                            name:"这个哦"
                        }
                    }
                }
            }
        })
    </script>
</body>
</html>

子组件访问父组件:使用parent,访问根组件:root

下面会有实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app">
        <cpn></cpn> 
    </div>
    <template id="cpn">
        <div>
            <h1>我是父组件</h1>
            <ccpn></ccpn>
        </div>
    </template>
    <template id="ccpn">
        <div>
            <h4>这里是我们的子组件</h4>
            <button @click="eclick">{{mmm}}</button>
        </div>
    </template>
    <script>

        var vm = new Vue({
            el:"#app",
            data:{
                message:"这里是内容是我自己让直接访问根组件的某个部分的"
            },
            components:{
                cpn:{
                    template:'#cpn',
                    data(){
                        return{
                            name:"这里是测试的"
                        }
                    },
                    components:{
                        ccpn:{
                            template:'#ccpn',
                            data(){
                                return{
                                    mmm:"稳小情"
                                }
                            },
                            methods:{
                                eclick(){
                                    //1.访问父组件$parent
                                    //console.log(this.$parent);
                                    //console.log(this.$parent.name);
                                    //2.访问根组件
                                    //console.log(this.$root);
                                    //console.log(this.$root.message)
                                }
                            }
                        }
                    }
                },
            }
        })
    </script>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读