• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >vue > vue2.0组件之间的通信

vue2.0组件之间的通信

作者:weixin_40159197的博客 字体:[增加 减小] 来源:互联网 时间:2017-09-08

本文主要包含vue等相关知识,weixin_40159197的博客希望在学习及工作中可以帮助到您

Vue应用在组件化之后,通常存在着 父子组件、兄弟组件、跨级组件 等组件关系,那么组件之间如何进行通信;Vue2.4提供了两种新的组件通讯方法。

在 Vue 中,父子组件的关系可以总结为 props down、events up。

  • 父子组件通信:父组件通过 props 向下传递数据给子组件
  • 子父组件通信:子组件通过 events 给父组件发送消息
    -使用 $on(eventName) 监听事件
    -使用 $emit(eventName) 触发事件
  • 非父子组件通信:使用一个空的 Vue 实例作为中央事件总线

在Vue 2.4 版本引入了组件通讯的新方式。

1. 重新引入 .sync 修饰符

熟悉 Vue1.x 的朋友一定对.sync修饰器并不陌生。在Vue1.x 中我们可能会需要对一个 prop 进行『双向绑定』。当一个 子组件 改变了一个 prop的值时,这个变化也会 同步到父组件中 所绑定的值。

因为它破坏了『单向数据流』的假设,.sync在2.0版本被移除,引起了广泛的讨论。在2.3.0版本.sync 又回来了,不过与1.x不同。

这次只是原有语法的语法糖(syntax sugar)包装而成,其背后实现原理是,在组件上自动扩充一个额外的 v-on监听器:

代码如下:


 

 

会被扩充为:


 

 

 

对于子组件,如果想要更新 foo 的值,则需要显式地触发一个事件,而不是直接修改 prop:


 

 

 

2. $attrs 与 $listeners

多级组件嵌套需要传递数据时,通常使用的方法是通过vuex。如果仅仅是传递数据,而不做中间处理,使用 vuex 处理,未免有点杀鸡用牛刀。Vue 2.4 版本提供了另一种方法,使用 v-bind=”$attrs”, 将父组件中不被认为 props特性绑定的属性传入子组件中,通常配合 interitAttrs 选项一起使用。

2.1 interitAttrs

在版本 2.4 之前,默认情况下父作用域的不被作为props特性绑定的属性,将会作为普通的 HTML 属性,应用在跟元素上。


 

 

 


 

 

最后会被渲染为:


 

 

 

设置 interitAttrs 为 false,之后,不会应用到跟元素上。


 

 

 

最后会被渲染为:


 

 

 

2.2 $attrs, $listeners

在Vue 2.4 版本,配合 interitAttrs选项, 父组件中未被props(v-on)绑定的属性(事件) 可以在子组件中,通过$attrs, $listeners 获取。


 

 

 

 

 

 

渲染为:

$attrs 与 $listeners

小结

  1. 在Vue2.0被移除的 .sync 被重新加入到2.4版本,不同的是需要显式地触发一个事件,而不是直接修改 prop。
  2. Vue2.4提供了 $attrs, $listeners 来传递数据与事件,跨级组件之间的通讯变得更简单。

您可能想查找下面的文章:

相关文章

  • 2017-05-30vue.js中指令Directives详解
  • 2017-05-30windows下vue-cli导入bootstrap样式
  • 2018-01-28vue+element的tree组件学习模板
  • 2017-05-30vue调用高德地图实例代码
  • 2017-05-30基于vue.js实现侧边菜单栏
  • 2017-05-30vue.js初学入门教程(1)
  • 2017-05-30Vue.JS入门教程之事件监听
  • 2017-05-30详解如何在Vue2中实现组件props双向绑定
  • 2017-05-30vue.js入门教程之绑定class和style样式
  • 2017-05-30Vue.js 2.0窥探之Virtual DOM到底是什么?

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 使用vue-cli(vue脚手架)快速搭建项目
    • Vue.js 父子组件通讯开发实例
    • 详解vue事件对象、冒泡、阻止默认行为
    • vue.js指令和组件详细介绍及实例
    • 详解Vue使用命令行搭建单页面应用
    • 简单理解Vue条件渲染
    • 详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
    • 基于vue+ bootstrap实现图片上传图片展示功能
    • Vue常用指令V-model用法
    • vue中如何引入jQuery和Bootstrap

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有