博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue sync 修饰符
阅读量:6093 次
发布时间:2019-06-20

本文共 1061 字,大约阅读时间需要 3 分钟。

sync 修饰符

vue 项目中,父子组件之间的数据通信为:

  • 父级组件改变子组件数据:
// 父组件
//子组件...
{
{status}}
... props:['status']复制代码
  • 子组件改变父组件数据:
//子组件...
{
{status}}
... props:['status'],data(){ return { someValue:'someValue' }} 父组件
...getVal(val){ console.log(val) // 'someValue'}复制代码

但是在有些情况下,我们可能需要对一个数据进行双向数据绑定。

这里有一个弹出框,假设它的显示和隐藏是由一个变量 show 控制,代码可能是这样的:

//父组件
//子组件
X //弹出框右上角的 关闭按钮
props:[visible],data(){ return { isShow:false }},watch:{ visible(val){ this.isShow = val }},methods:{ close(){ this.isShow = false }}复制代码

但是有一个问题,当在子组件 close 方法中,虽然已经将 isShow 改变为 false,但是 并没有通知到 父组件,要知道 在父组件中,控制弹出框的现实和隐藏是通过 show 。点击子组件的关闭按钮时,父组件的 show 没有发生改变。

vue 提供 update:my-prop_name 的模式触发事件。

//子组件close(){    this.isShow = false    this.$emit('update:visible', false)}//父组件
复制代码

为了方便起见,vue 还提供了一种缩写形式, 即 .sync 修饰符

//父组件
复制代码

通过这种写法,当子组件执行 close 事件的时候,不仅改变了自己内部的 isShow 的值,而且还将 父组件的 visible的状态发生了改变.

转载于:https://juejin.im/post/5b6afe9e5188251b1f228666

你可能感兴趣的文章
我的友情链接
查看>>
MYSQL驱动包升级到5.1.17版本之后会出现的问题
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
手工添加一个linux用户并能登陆
查看>>
如何删除Eclipse subclipse plugin中记住的SVN用户名密码
查看>>
烂泥:NFS做存储与KVM集成
查看>>
烂泥:puppet添加带密码的用户
查看>>
awk内建函数
查看>>
Nginx环境下隐藏Nginx的版本信息
查看>>
关于数据库的分库分表
查看>>
Docker容器之最小JDK基础镜像
查看>>
ext3grep恢复linux下误删除的文件
查看>>
Amazon SNS Mobile Push Notifications
查看>>
c语言判断平年/闰年
查看>>
支持双启动的PC平台Chrome OS版本问世
查看>>
崛起中的九大HTML5开发工具
查看>>
linux下svn命令使用大全:二
查看>>
ARp欺骗
查看>>
myeclipse10.0优化
查看>>