2019-02-27学习内容

第五课
第一部分:父子组件通用变量和方法
父组件 Home.vue
子组件 MyTest

一, 获取父组件中的直接调用方法.

我们在子组件Mytest中,添加一个单击按钮,用来获取父组件的father_English_scores的值
在这里插入图片描述
页面端:
在这里插入图片描述
代码为:
在这里插入图片描述
这一次,我们单击后不看到结果。然后由console.log显示出调用后的变化,这样就可以得到父组件里面的值了。
在这里插入图片描述

重点:Parent能够实现访问父组件的属性和方法,如果存在多级子组件,通过parent访问得到的是它最近一级的父组件。跟上节课学到的props相比,这个更直接,更便捷,但是它 的隐密性和安全性不强。
二,Ref 与 refs的用法
Ref用来给元素或子组件注册引用信息。引用信息将会注册在父组件的$refs对象上。
第一种情况:
如果在普通的DOM 元素上使用,引用指向的就是DOM元素。
我们在home.vue 下建立一个按钮

在这里插入图片描述
Methods:
在这里插入图片描述
页面端效果:

在这里插入图片描述

第二种情况:
如果用在子组件上,引用就指向组件实例。
Home.vue中
我们给Mytext这个子组件起一个别名,叫test1,那么test1接下来就代表了Mytest这个组件。
在这里插入图片描述
mytest中
data中先声明:
在这里插入图片描述

子组件中声明过后,父组件就可以调用了。
在home.vue中
在这里插入图片描述
重点:这里出现了refs. $refs 表示集合
refs只有在组件渲染完成后才填充。
页面端:
在这里插入图片描述

小结:
1,vue里ref (refs)用法(注意这里有美元符号)
  ref 有三种用法:
  (1)ref 加在普通的元素上,用this.ref.name 获取到的是dom元素
  (2)ref 加在子组件上,用this.ref.name 获取到的是组件实例,可以使用组件的所有方法。
2,在父子组件信息互通的方法中:
(1) 非直接式的,安全性较强:
子调用父:用props
父调用子:用$emit
(2) 直接式的,安全性较弱
子调用父:用parant
父调用子:用ref
第二部分 非父子组件如何互通信息和方法
我们先来看一下关系图:
在这里插入图片描述
比如说,首面组件1和新闻组件2都不是父子组件关系。那么它们怎么互通信息呢?
这时候我们就需要建立一个中转站。
先建立中转站:MyVueEventspublic.js 这是个事件,相当于全局事件,它通过vue实例进行中转。
创建方法:

在这里插入图片描述
在这里插入图片描述
点ok后,就可以看到创建成功。
在这里插入图片描述
在其vue里,写上代码:
在这里插入图片描述

其中:Var MyVueEventspublic = new Vue()
这句话的意思是:创建一个空的vue实例,名字叫做MyVueEventspublic ,这是声明一个全局变量,可以取其他名.

扫描二维码关注公众号,回复: 5408669 查看本文章

接下来,我们创建两个子组件son1和son2,在views下,和about,home并列。

在这里插入图片描述

在app.vue里,写上:
在这里插入图片描述
同时
在这里插入图片描述

页面端显示:
在这里插入图片描述
接下来在son1里面
先定义一个按钮,让它单击后传变量给son2:

在这里插入图片描述
对应写下方法:
在这里插入图片描述
其中我们运用了
$emit 是“发射”的意思,后面toB只是一个事件。这句话的意思是,单击son1的按钮,就会把son1的变量传给中间站MyVueEventspublic
其间我们运用到了两个新的变量要声明一下:

在这里插入图片描述
这时候,我们就需要在son2里面进行接收:
打开son2.vue
先和中间站产生关联
在这里插入图片描述
声明变量:
在这里插入图片描述
接下来运用:
在这里插入图片描述
用$on这个回调函数,用来监听导入,就是在JS中转站里面通过”toB”事件,获取son1组件变量的值。也就是说,当toB事件发生的时候,son2 就接收到了son1传过来的信息。
页面端:
在这里插入图片描述

接下来要在son2组件中传一个变量’12345’给son1,方法同上。
在这里插入图片描述
小结:
非父子组件之间的信息互传
1, 建立中间站
2, 通过中间站,从第一个组件往中间站里发射事件,用 e m i t 3 emit 3, 第二个组件从中间站里回调这个事件,用 on

猜你喜欢

转载自blog.csdn.net/weixin_44615660/article/details/88104856