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. k-匿名算法

    30 November 2019 18:31     人类历史上,除了计算机外从没有一项技术可以在短短的几十年间,能够全方位的影响整个社会的各个领域.技术的发展,少不了许多代人为之的努力.无论是在计算 ...

  2. 腾讯java面试经验 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.腾讯等公司offer,岗位是Java后端开发,因为发展原因最终选择去了腾讯,入职一年时间了,也成为了面试官,之 ...

  3. python3.6安装pyinstaller报错:AttributeError: module 'enum' has no attribute 'IntFlag'

    转载至:https://blog.csdn.net/qq_41185868/article/details/80599336 感谢原作者的分享 解决思路:这可能是由包Enum34引起的.因为Pytho ...

  4. iOS - 架构的认识过程,悬崖勒马。

    16年的时候写过一篇代码讲解的,依旧是这三种架构,现在20年将近了,看到好的文章,是否增加新的认识. 16年链接 iOS - 架构模式 - 解密 MVC.MVP.MVVM.VIPER架构 新项目选择架 ...

  5. webpack 入门和常用插件的使用

    常用配置参数 module.exports = { context: path.resolve(__dirname, '../'), entry: { app: './src/main.js' }, ...

  6. uni-app学习

    1. 学习uni-app 1.1. 概述 号称一次编写多端运行的前端框架,架构图如下 对某些不同平台的特殊功能,可以通过条件进行自动编译,也就是写两套代码,不同的环境会选择不同代码编译 1.2. 推荐 ...

  7. Vue学习之vue-resource小结(五)

    一.Vue实现数据交互的方式: 1.Vue除了vue-resource之外,还可以使用‘axios’的第三方包实现数据的请求: 2.常见的数据请求类型有: get.post.jsonp 3.JSONP ...

  8. EXCHANGE上冒充任意用户--Exchange Server权限提升漏洞(CVE-2018-8581)分析

    0x00 前言 这是我们2018年Top 5趣案系列中的第三个案例.这些漏洞都有一些因素使它们从今年发布的大约1,400个报告中脱颖而出.今天我们将分析一个Exchange漏洞,它允许任何经过身份验证 ...

  9. 摘jmeter安装之后如何汉化

    下载完成后打开bin文件,选择jmeter.properties打开,搜索language,修改成zh_CN,汉化jmeter,记得去掉前面的#号,然后保存,修改完配置文件后需要重启jmeter 用的 ...

  10. H3C 802.1x认证接入过程