1、v-model的双向数据绑定其实是一个语法糖,类似于,给子组件传入一个value值,并且监听子组件的input事件,在这个事件里将子组件传过来的新值赋值给父组件的value

<Input v-model="username">
//同于下:
<Input :value="username" @input="username=$event">
//在子组件里面需要接收value属性,并绑定input事件
//子组件
 <input :value="value" @input="onInput">
//props选项:
  props: {
     value: {
       type: String,
       default: ""
     }
   },
  //methods选项
   methods: {
     onInput(e) {
       // 派发事件,传递最新的值
       this.$emit("input", e.target.value);
     }
   }

注:v-model的语法糖的默认传递的属性是value,默认监听的事件是input事件

当然,默认属性和默认事件可以在子组件中自定义,如下:

//Input.vue子组件中有一个model选项可以用来自定义v-model的默认属性和事件(vue2.4以上的版本中新加的)
{
model:{
prop:'checked', //传递的属性
event:'change' //监听的事件
} }

这样在子组件中,就可以结束checked属性值,和绑定change事件了

2、.sync修饰符和v-model实现的效果是相像的,只是.sync的绑定事件是不变的,也不能自定义的,必须是update:属性名;但是传入的属性是可以随意定义的,只要和事件update后面的参数保持一致就行了

<Input :aaa.sync="username">
//如同下
<Input :aaa.sync="username" @update:aaa="username = $event">
//这样也能实现数据的双向绑定

此时子组件中,子组件绑定的事件的$emit的事件也必须是update:aaa

this.$emit("update:aaa,false);

这样在父组件中才能监听到子组件的变化

总结一下:v-model是比较灵活的,它有默认的属性和事件,也可以自定义指定,比较方便;相比下,sync的事件就是固定不变的了,无法自定义

v-model和 .sync的更多相关文章

  1. sync—WaitGroup

    用途:阻塞主线程的执行,直到所有的goroutine执行完成 WaitGroup总共有三个方法:Add(delta int),Done(),Wait().简单的说一下这三个方法的作用. Add:添加或 ...

  2. backbone库学习-model

    backbone库的结构: http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文所有例子来自于http://blog.cs ...

  3. 【再探backbone 01】模型-Model

    前言 点保存时候不注意发出来了,有需要的朋友将就看吧,还在更新...... 几个月前学习了一下backbone,这段时间也用了下,感觉之前对backbone的学习很是基础,前几天有个园友问我如何将路由 ...

  4. backbone.Model 源码笔记

    backbone.Model backbone的model(模型),用来存储数据,交互数据,数据验证,在view里面可以直接监听model来达到model一改变,就通知视图. 这个里面的代码是从bac ...

  5. 什么是V模型?使用SDLC和STLC学习案例研究

    本教程详细介绍了软件/系统开发生命周期(SDLC),如瀑布循环和迭代循环,如RAID和Agile.此外,它继续解释测试的V模型和STLC(软件测试生命周期). 假设为您分配了一项任务,即为客户开发自定 ...

  6. 【原创】backbone1.1.0源码解析之Model

    趁热打铁,将Backbone.Model的源代码注释也发出来. Model是用来干嘛的?写过mvc的同学应该都知道,说白了就是model实例用来存储数据表中的一行数据(row) Backbone利用m ...

  7. Backbone Model 源码简谈 (版本:1.1.0 基础部分完毕)

    Model工厂   作为model的主要函数,其实只有12行,特别的简练 var Model = Backbone.Model = function(attributes, options) { va ...

  8. sync.Map(在并发环境中使用的map)

    sync.Map 有以下特性: 需要并发读写时,一般的做法是加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是 ...

  9. Golang Sync.WaitGroup 使用及原理

    Golang Sync.WaitGroup 使用及原理 使用 func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.A ...

  10. 不可错过的效能利器「GitHub 热点速览 v.22.39」

    如果你是一名前端工程师且维护着多个网站,不妨试试本周榜上有名的 HTML-first 的 Qwik,提升网站访问速度只用一招.除了提升网站加载速度的 Qwik,本周周榜上榜的 Whisper 也是一个 ...

随机推荐

  1. [Linux] 树莓派编译python3.7.4

    python3.7.4 源码编译后遇到ssl错误: pip is configured with locations that require TLS/SSL, however the ssl mod ...

  2. python的new与init

    基于文章:Why is init() always called after new()? 特别说明: 这篇文章的灵感来源于stackoverflow的一个提问,准确说,我只是做了些知识梳理的工作,对 ...

  3. 阿里熔断限流Sentinel研究

    1. 阿里熔断限流Sentinel研究 1.1. 功能特点 丰富的应用场景:例如秒杀(即突发流量控制在系统容量可以承受的范围).消息削峰填谷.集群流量控制.实时熔断下游不可用应用等 完备的实时监控:S ...

  4. FreePascal - CodeTyphon 如何调整代码编辑器背景色?

    当前版本的CodeTyphon默认背景色是黑色,看起来很不习惯,通过下面操作,修改了它的代码编辑器的背景色: 1,打开CodeTyphon的菜单“工具”->“选项”. 2,选择左侧列表项目“颜色 ...

  5. css实现弹框垂直居中

    原文链接:https://blog.csdn.net/sunny327/article/details/47419949/ <!DOCTYPE html><html> < ...

  6. sklearn---DBSCAN

    参考文献: [1]用scikit-learn学习DBSCAN聚类

  7. Dump文件的生成和使用

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lk142500/article/detai ...

  8. C#程序保存dump文件

    作用 程序异常崩溃前使用此类为进程创建DUMP文件,之后可以使用WinDbg等工具进行分析. 辅助类代码 using System; using System.Diagnostics; using S ...

  9. Laravel5.4框架中视图共享数据的方法详解

    本文实例讲述了Laravel5.4框架中视图共享数据的方法.分享给大家供大家参考,具体如下: 每个人都会遇到这种情况:某些数据还在每个页面进行使用,比如用户信息,或者菜单数据,最基本的做法是在每个视图 ...

  10. Java-Modifier类常用方法详解

    一.Modifier类的定义 Modifier类 (修饰符工具类) 位于 java.lang.reflect 包中,用于判断和获取某个类.变量或方法的修饰符Modifier类将各个修饰符表示为相对应的 ...