欢迎光临散文网 会员登陆 & 注册

Vue从零开始总结29

2021-04-24 11:15 作者:忘魂儿  | 我要投稿

父传子实现了,那么接下来就是父访问子了。

在父组件中使用指定函数

第一种方法:在指定函数内使用$children获取子组件中的内容

代码如下:

<template id="son">
 <div> <h2>{{message}}</h2></div>
</template>

<div id="app">
<cpn></cpn>
 <button @click="btnClick">获取</button>
</div>

const app=new Vue({
   el:document.querySelector('#app'),
   data:{
   num1:0,
   num2:1
 }, components:{
     cpn:{
       template:'#son',
       data(){
         return {
           message:'子组件中的数据'
         }
       }
     }
 },
 methods: {
   btnClick(){
     console.log(this.$children);
   }
 }

})

我们发现通过$children获取到的是数组

当使用多个cpn,相当于创建了多个不同的实例,这些实例以数组的形式存储在VueComponent里,下标从0开始,uid从1开始

<div id="app">
<cpn></cpn>
<cpn></cpn>
<cpn></cpn>
 <button @click="btnClick">获取</button>
</div>

btnClick(){
 for (let x of this.$children)
 {
   console.log(x);
 }
}


第二种方法:在指定函数内,使用$refs获取子组件中的数据

@one.当我们未在子组件标签行内指定ref值时

发现获取到的是空对象,里面空空如也

@two.当我们在子组件标签行内指定ref值时

<div id="app">
<cpn ref="a"></cpn>
<cpn ref="b"></cpn>
<cpn ref="c"></cpn>
 <button @click="btnClick">获取</button>
</div>

btnClick(){
 console.log(this.$refs);
}


发现获取到了相应ref值的对象。

那么接下来就可以通过ref值来访问子组件里的数据了

btnClick(){
 console.log(this.$refs.a.message);
}


Vue从零开始总结29的评论 (共 条)

分享到微博请遵守国家法律