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 相关文章推荐
小型js框架veryide.librar源代码
Mar 05 Javascript
JavaScript Event学习第十章 一些可替换的事件对
Feb 10 Javascript
可以用来调试JavaScript错误的解决方案
Aug 07 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
Dec 13 Javascript
jquery dataview数据视图插件使用方法
Dec 23 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
jQuery图片查看插件Magnify开发详解
Dec 25 jQuery
详解Vue源码学习之callHook钩子函数
Jul 25 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
Aug 24 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 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
PHP类中Static方法效率测试代码
2010/10/17 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
Python数据集切分实例
2018/12/08 Python
Python列表切片常用操作实例解析
2020/03/10 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
怎样写好自我鉴定
2013/12/04 职场文书
小学生成长感言
2014/01/30 职场文书
运动会通讯稿300字
2014/02/02 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
申报材料格式
2014/12/30 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
MySQL 存储过程的优缺点分析
2021/05/20 MySQL