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 相关文章推荐
javascript 函数调用规则
Aug 26 Javascript
简单的前端js+ajax 购物车框架(入门篇)
Oct 29 Javascript
jQuery实现图片放大预览实现原理及代码
Sep 12 Javascript
JS实现鼠标单击与双击事件共存
Mar 08 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 Javascript
javascript 中模板方法单例的实现方法
Oct 17 Javascript
angularjs实现table增加tr的方法
Feb 27 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
May 29 Javascript
基于JS实现数字动态变化显示效果附源码
Jul 18 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
Mar 04 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 socke 向指定页面提交数据
2008/07/23 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
php5.3 注意事项说明
2013/07/01 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
jquery搜索框效果实现方法
2015/01/16 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
nodejs读取并去重excel文件
2018/04/22 NodeJs
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
python双向链表实现实例代码
2013/11/21 Python
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
Python3实现连接SQLite数据库的方法
2014/08/23 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
国企干部对照检查材料
2014/08/22 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript