vue 之 .sync 修饰符示例详解


Posted in Javascript onApril 21, 2018

在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行“双向绑定”。

在vue 1.x 中的 .sync 修饰符所提供的功能。当一个子组件改变了一个带 .sync 的prop的值时,这个变化也会同步到父组件中所绑定的值。

这很方便,但也会导致问题,因为它破坏了单向数据流。(数据自上而下流,事件自下而上走)

由于子组件改变 prop 的代码和普通的状体改动代码毫无区别,所以当你光看子组件的代码时,你完全不知道它合适悄悄地改变了父组件的状态。

这在 debug 复杂结构的应用时会带来很高的维护成本。于是我们在 vue 2.0 中移除了 .sync 。

但是在实际应用中,我们发现 .sync 还是有其适用之处的,比如在开发可复用的组件库时。(懵逼○△○)

我们需要做的只是  让子组件改变父组件状态的代码更容易被区分。

于是从 vue 2.3.0 开始,我们重新引入了 .sync 修饰符,但是这次它只是作为一个编译时的语法糖存在。他会被自动扩展为一个  自动更新父组件属性的 v-on 监听器。

例如

<child :foo.sync=”msg”></child> 就会被扩展为: <child :foo=”bar” @update:foo=”val => bar = val”>  (@是v-on的简写)

 当子组件需要更新 foo 的值的时候,他需要显示的触发一个更新事件:   this.$emit( “update:foo”, newValue );

初始状态:

 vue 之 .sync 修饰符示例详解

 点击之后的状态:

 vue 之 .sync 修饰符示例详解

 vue 之 .sync 修饰符示例详解vue 之 .sync 修饰符示例详解

原理就是父组件向子组件传递了一个函数:function (newValue) { this.msg = newValue; }

vue 之 .sync 修饰符示例详解

当使用一个对象一次性设置多个属性的时候,这个 .sync 修饰符也可以和 v-bind 一起使用。

例如:  <child  v-bind.sync = “{ message: msg, uC: uc}”></child>     (不能写成  :.sync="{*********}",否则会报错的)

这个例子会为 message 和 uC 同时添加用于更新的 v-on 监听器。

 

vue 之 .sync 修饰符示例详解vue 之 .sync 修饰符示例详解vue 之 .sync 修饰符示例详解

总结

以上所述是小编给大家介绍的vue 之 .sync 修饰符示例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
FF IE兼容性的修改小结
Sep 02 Javascript
jquery与google map api结合使用 控件,监听器
Mar 04 Javascript
js获取height和width的方法说明
Jan 06 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
Jun 24 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 Javascript
javascript遇到html5的一些表单属性
Jul 05 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 Javascript
VUE实现日历组件功能
Mar 13 Javascript
bootstrap table表格客户端分页实例
Aug 07 Javascript
Vue下拉框回显并默认选中随机问题
Sep 06 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
Apr 20 #Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
Apr 20 #Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 #jQuery
vue多页面开发和打包正确处理方法
Apr 20 #Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 #Javascript
Vue写一个简单的倒计时按钮功能
Apr 20 #Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 #Javascript
You might like
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
理解AngularJs指令
2015/12/10 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
使用python统计文件行数示例分享
2014/02/21 Python
详解Python的单元测试
2015/04/28 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
python 导入数据及作图的实现
2019/12/03 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
自荐信格式的六要素
2013/09/21 职场文书
房地产推广策划方案
2014/05/19 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书