一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件

Vue.component('custom-input', {props: ['value'],template: `<inputv-bind:value="value"v-on:input="$emit('input', $event.target.value)">`
})
<custom-input v-model="searchInput"></custom-input>

但是像单选框、复选框等类型的输入控件可能会将 value 作为服务器提交时的内容,可以通过 mode 来指定其他属性。

Vue.component('custom-checkbox', {model: {prop: 'checked',event: 'change'},props: {checked: Boolean},template: `<inputtype="checkbox"v-bind:checked="checked"v-on:change="$emit('change', $event.target.checked)">`
})
<custom-checkbox v-model="selectFramework"></custom-checkbox>

vue3

v-model prop 和事件默认名称已更改:

prop属性:value 变为-> modelValue;

event事件:input 变为-> update:modelValue;

在 3.x 中,自定义组件上的 v-model 相当于传递了 modelValue prop 属性并接收抛出的 update:modelValue 事件:

Vue.component('custom-input', {props: ['modelValue'],template: `<inputv-bind:value="modelValue"v-on:input="$emit('update:modelValue', $event.target.value)">`
})
<custom-input v-model="searchInput"></custom-input>

v-model参数新增

若需要更改 model 名称,而不是更改组件内的 model 选项,那么现在我们可以将一个参数传递给 model:

Vue.component('custom-checkbox', {props: {checked: Boolean},template: `<inputtype="checkbox"v-bind:checked="checked"v-on:change="$emit('update:checked', $event.target.checked)">`
})
<custom-checkbox v-model:checked="selectFramework"></custom-checkbox>

我们在上面的代码中可以看到 v-model 后面加上了冒号传递参数 :checked ,表示 v-model 绑定的是 checked 属性,在触发的事件通过 update:属性 指定,注意格式是固定的,必须 update: 加上属性名称。

sync修饰符删除

如果需要的话,父级可以监听该事件并更新本地 data property。例如:

<custom-checkbox :checked="selectFramework" @update:checked="selectFramework = $event"></custom-checkbox>

为了方便起见,我们可以使用 .sync 修饰符来缩写,如下所示:

<custom-checkbox :checked.sync="selectFramework"></custom-checkbox>

vue3 中 bind 的 .sync修饰符和组件的 model 选项已移除,统统都要使用 v-model 作为代替;

<custom-checkbox v-model:checked="selectFramework"></custom-checkbox>

而且允许我们在自定义组件上使用多个 v-model。

<ChildComponent v-model:title="pageTitle" v-model:content="pageContent" /><!-- 简写:--><ChildComponent:title="pageTitle"@update:title="pageTitle = $event":content="pageContent"@update:content="pageContent = $event"
/>

之前是自定义组件上只能使用一个,现在改为可以使用多个了。

vue3中v-model的重大更新相关推荐

  1. Vue3中使用Monaco Editor代码编辑器记录~持续更新

    Vue3中使用Monaco Editor代码编辑器记录-持续更新 因为毕设需要用到代码编辑器,根据调研,我选择使用monaco-editor代码编辑器 前端框架使用Vue3 + elementUI m ...

  2. 剖析Vue3中setup()的用法(持续更新中)

    一.setup的特性及作用 可以确定的是 Vue3.0 是兼容 Vue2.x 版本的 也就是说我们再日常工作中 可以在 Vue3 中使用 Vue2.x 的相关语法 但是不建议这样写. Vue3 的一大 ...

  3. 中input怎么接受后台传值_[vue3]如何在vue3中优雅地使用vmodel?

    Vue中的数据绑定 绑定数据有三种方式: 插值,也就是{{name}}的形式,以文本的形式和实例data中对应的属性进行绑定 v-bind v-model v-bind eg:v-bind:class ...

  4. vue3 中使用动画技术

    vue3 中使用动画技术 作者: jcLee95 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm=1001.21 ...

  5. vue2、vue3中自定义v-model的使用和区别

    在我们的日常开发中,时常需要写一些自定义组件,而其中可能就会使用到v-model,v-model是Vue中的一个指令,用来实现数据的双向绑定,实现数据.视图更新,v-model是一个语法糖,,我们可以 ...

  6. 深入浅出虚拟 DOM 和 Diff 算法,及 Vue2 与 Vue3 中的区别

    因为 Diff 算法,计算的就是虚拟 DOM 的差异,所以先铺垫一点点虚拟 DOM,了解一下其结构,再来一层层揭开 Diff 算法的面纱,深入浅出,助你彻底弄懂 Diff 算法原理 认识虚拟 DOM ...

  7. 13个Vue3中的全局API的源码浅析汇总整理

    前言 不知不觉vue-next的版本已经来到了3.1.2,最近对照着源码学习vue3的全局Api,边学习边整理了下来,希望可以和大家一起进步. 我们以官方定义.用法.源码浅析三个维度来一起看看它们.下 ...

  8. 浅谈 Vue3 中的 v-model 和 sync 修饰符

    很多同学对 Vue 的第一印象就是"响应式"."双向绑定"等特性,而 v-model 就是实现双向绑定的语法糖,用过 Vue 的小伙伴一定都非常熟悉.但是在 V ...

  9. 如何在vue3中优雅地使用v-model?

    文章目录 ps:vue3中推荐使用的是reactive写法,文中这种格式只是为了和vue2做对照,只是为了凸显vue3中对v-model的改进,仅供参考. Vue中的数据绑定 v-bind v-bin ...

最新文章

  1. 【Android开发】基本组件-复选框
  2. Deep Learning论文笔记之(六)Multi-Stage多级架构分析
  3. mysql 服务端是否正常运行_如何确定mysql是否正常运行?(问题已解决:结帖)
  4. c# 将doc转换为docx
  5. mysql 事务日志备份_SQL Server恢复模式与事务日志备份
  6. android 应用自动退出,android – 应用程序自动退出,没有任何警告或错误
  7. Heartbeat实现web服务器高可用
  8. Spring DeferredResult 实现长轮询
  9. Java、JSP电子政务软件系统公众服务的研究
  10. 计算机操作系统pv操作讲解,计算机操作系统PV操作例题
  11. 8月刚入职字节跳动的测试开发面试题,附答案
  12. 逃离996的年轻人却难逃租房的“坑”
  13. 03-12306验证码文字 识别
  14. CondConv: Conditionally Parameterized Convolutions for Efficient Inference论文解读
  15. 任务一: SpringMVC基本应用
  16. 04 cefsharp谷歌浏览器多开页面的实现
  17. DynamoDB系列之--本地二级索引
  18. 经验分享:如何系统学习 Web 前端技术?
  19. 火星辩证派第1期·精华版:为什么在DeFi这个赛道上国外项目异常火爆,中国市场却反应迟缓?...
  20. 转:数据可视化怎么学?看完本文你将理解透彻!

热门文章

  1. 小冰与老东家微软达成战略合作,并宣布数亿元Pre-A轮融资,将全面开展商业化
  2. 优酷响应式在消费场景的落地之 iOS 篇
  3. 腾讯钟翔平:以数字技术驱动,做智慧交通共建者
  4. 三步走!从头开始设计一款游戏
  5. 分布式系统设计理念为何这么难学?
  6. 谁将称霸跨平台应用市场?
  7. 脱离微信,在硬件设备运行小程序?小程序硬件框架大揭秘!
  8. 百度举办区块链论坛,携手多伙伴加速区块链产业落地
  9. 作为相亲大户,程序猿为何普遍单身?
  10. 一套代码两端运行不靠谱?是时候放弃 C++ 跨 Android、iOS 端开发!