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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
js仿百度贴吧验证码特效实例代码
Jan 16 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
用jquery仿做发微博功能示例
Apr 18 Javascript
JS中对数组元素进行增删改移的方法总结
Dec 15 Javascript
jQuery实现立体式数字滚动条增加效果
Dec 21 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
学习Vue组件实例
Apr 28 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
vue+axios全局添加请求头和参数操作
Jul 24 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初学者们头痛的十四个问题
2007/01/15 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
asp 取文本框名称代码
2008/12/02 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
js字符串类型String常用操作实例总结
2019/07/05 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
python线程优先级队列知识点总结
2021/02/28 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
为什么使用接口?
2014/08/13 面试题
大学生实习感言
2014/01/16 职场文书
大气污染防治方案
2014/05/19 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
入党团支部推荐意见
2015/06/02 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
解析Java中的static关键字
2021/06/14 Java/Android
zabbix配置nginx监控的实现
2022/05/25 Servers