一直以来,都不太明白.sync的用法,归根结底原因在于,没有仔细阅读“.sync修饰符”。

  正好,最近在拿一个项目练手,然后使用了elment-ui,然后在用到dialog的时候,属性visible是用来控制是否显示Dialog的,后面特意强调了支持.sync修饰符。

  所以,此时再次看到.sync修饰符,就会想到这个Dialog,那么必然不能放过了,正好好好研究一下.sync修饰符的用法。

  vue官网关于.sync:

在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源。

  这说明在某些情况下数据传递需要“双向绑定”,但又不能为了这些少数情况,而导致多数情况的数据维护困难,所以就“推荐以 update:myPropName 的模式触发事件取而代之”,此时父组件就会稍显麻烦,需要先绑定数据v-bind,然后监听v-on:update:myPropName,为了父组件使用上的方便,vue于是为这种模式提供了.sync修饰符,也就是说父组件直接使用:myPropName.sync传递数据,子组件使用this.$emit("update:myPropName",myPropValue),就实现了部分情况下的父子组件的数据双向绑定。

  通过具体代码实现一遍比较具象:

  父组件:

<modal-stop title="附加设备停用" :dialogVisible.sync="visible" @confirm="stopDevicesConfirm"/>

  子组件是一个Dialog,那么点击“取消”按钮时,其实也就是一个操作——关闭弹窗,那么此时如果能够不需要在每一个父组件当中定义:this.visible=false,肯定会很happy,这就需要.sync修饰符来帮忙了。

  父组件已经定义  :dialogVisible.sync="visible",

  那么子组件当中: this.$emit("update:dialogVisible", false);   这里的dialogVisible就是我们自定义的属性名称,也就是myPropName,emit传递回去的false也就是需要在点击“取消”按钮之后,需要将visible修改成的值。

  是不是能够理解.sync修饰符了呢!

  

vue中.sync 修饰符的更多相关文章

  1. Vue中.sync修饰符

    Vue 中 sync的作用 <FatherComponent :a.sync = 'b'><FatherComponent /> 子组件中emit('update:a',... ...

  2. vue中.sync修饰符,实现子组件实时更新父组件的值

    vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定. 不过它有一个前身,先来看看.sync出现之前是如何实现的 父组件中(传递给子组件一个值:p ...

  3. vue中的修饰符

    Vue2.0学习笔记:Vue事件修饰符的使用   事件处理 如果需要在内联语句处理器中访问原生DOM事件.可以使用特殊变量$event,把它传入到methods中的方法中. 在Vue中,事件修饰符处理 ...

  4. vue 之 .sync 修饰符

    在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行“双向绑定”. 在vue 1.x 中的 .sync 修饰符所提供的功能.当一个子组件改变了一个带 .sync 的prop的 ...

  5. vue的.sync 修饰符

    很多时候,我们会对 prop (父子组件传递数据的属性) 进行“双向绑定” 在vue 1.x 中的 .sync 修饰符所提供的功能.当一个子组件改变了一个带 .sync 的prop的值时,这个变化也会 ...

  6. [Vue]组件——.sync 修饰符实现对prop 进行“双向绑定”

    一.同时设置1个 prop 1.以 update:my-prop-name 的模式触发事件,如对于title属性: this.$emit('update:title', newTitle) 2.然后父 ...

  7. 026——VUE中事件修饰符之使用$event与$prevent修饰符操作表单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 027——VUE中事件修饰符:stop prevent self capture

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. VUE中事件修饰符:stop prevent self capture

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

随机推荐

  1. PHP有关守护进程,以及流程控制和信号处理函数

    守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.PHP也可以实现守护进程的功能. 1.基本概念 进程 ...

  2. Full permutation

    Full Permutation 全排列问题, 将1~n这n个整数按字典序排放 划分: 输出1开头的全排列 输出2开头的全排列 ...... 输出n开头的全排列 递归边界:当下标1 ~ n 位都已经填 ...

  3. locate语法

    1.命令格式:locate [参数] [文件] 2.命令功能:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的 ...

  4. 2019-04-16-day033-锁与队列

    内容回顾 几个问题 概念多,练习少 不问问题 概念?代码? Process类 并发并行 并发 是同一时间段内多个任务交替使用同一个cpu 并行 是在同一个时刻多个任务在不同的cpu上同时执行 同步异步 ...

  5. sqlite数据库操作

    1.创建表 import sqlite3 conn = sqlite3.connect('C:\\Users\\Kuma\\Desktop\\spider.db') print('connect su ...

  6. [LeetCode&Python] Problem 674. Longest Continuous Increasing Subsequence

    Given an unsorted array of integers, find the length of longest continuousincreasing subsequence (su ...

  7. es6学习日记4

    数组的扩展 扩展运算符是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) // 1 2 3 console.l ...

  8. latex之注释快捷键

    注释快捷键 ctrl+T:注释掉选中区域 ctrl_U:解除选中区域的注释

  9. Oracle使用笔记(二)

    一.表空间 1.创建表空间 create tablespace db_test --表空间名 datafile 'D:\oracle\product\11.2.0\dbhome_1\oradata\o ...

  10. Centos7.4安装配置haproxy和Keepalived补充内容

    补充比较杂 1.当master服务恢复正常之后,backup机器收到消息,然后让出vip 下面是master机器服务恢复正常后,backup机器的Keepalived日志 收到master的消息通知, ...