首页 > 其他分享 >vue中v-model理解

vue中v-model理解

时间:2023-06-13 14:56:56浏览次数:40  
标签:vue value prop 理解 事件 组件 input model

1.原理

v-model是语法糖,相当于以下代码

<input v-model="value>/>

等价于

<input :value="value" v-on:input="this.value = $event.target.value"/>
  • v-bind:value实现数据从data->组件
  • input触摸事件实现数据从组件->data

v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:
text 和 textarea 元素使用 value 属性和 input 事件;
checkbox 和 radio 使用 checked 属性和 change 事件;
select 字段将 value 作为 prop 并将 change 作为事件。
从而实现双向绑定

2.使用

2.1 使用在组件上时

  • 注意
    为了让它正常工作,这个组件内的 必须:
    将其 value attribute 绑定到一个名叫 value 的 prop 上
    在其 input 事件被触发时,将新的值通过自定义的 input 事件抛出
<custom-input
  v-bind:value="searchText"
  v-on:input="searchText = $event"
></custom-input>

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

2.2 model属性

一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value attribute 用于不同的目的。model 选项可以用来避免这样的冲突

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

标签:vue,value,prop,理解,事件,组件,input,model
From: https://www.cnblogs.com/cxyc/p/17477494.html

相关文章

  • 直播软件app开发,vue里tab菜单横向展示,可分页功能组件实现
    直播软件app开发,vue里tab菜单横向展示,可分页功能组件实现子组件: <template><div>  <el-buttonv-if="move!=0&&!dataLen"size='small'icon="el-icon-arrow-left"@click="navPrev"></el-button>   <ulref......
  • 创建vue工程
    一、创建项目(1)elementui elementui就是基于vue的一个ui框架,该框架基于vue开发了很多相关组件,方便我们快速开发页面。 网页链接:https://element.eleme.cn/#/zh-CN/component/installation ......
  • fastapi ResponseModel
    frompydanticimportBaseModelclassResponseModel(BaseModel):code:int=200msg:str=""success:bool=Truedata:dict=NoneclassTaskResponseModel(ResponseModel):data:dict={"code":200,......
  • vue时间选择器 nut-datepicker
    vue时间选择器https://blog.csdn.net/Marshall_Ma/article/details/1242444511、年-月-日时:分效果展示:打开选择器:<divclass="label">记录日期:</div><nut-cell:showIcon="true":isLink="true"@click.native="switchPicker"......
  • 理解ABR及其工作原理
    翻译|Alex技术审校|赵军本文来自OTTVerse,作者为KrishnaRaoVijayanagar。ABREasyTech#007#ABR表示AdaptiveBitrate(自适应码率),它广泛地描述了这样一个过程:视频和音频的质量和码率会根据当前网络状况的波动而发生自适应变化,以确保网络传输流畅。ABR明显不同于CBR(ConstantBitr......
  • 前端vue自定义简单实用下拉筛选 下拉菜单
    前端vue自定义简单实用下拉筛选下拉菜单, 下载完整代码请访问: https://ext.dcloud.net.cn/plugin?id=13020效果图如下:   ####使用方法```使用方法<!--titleArr:选择项数组dropArr:下拉项数组@finishDropClick:下拉筛选完成事件--><ccDropDownMenu:tit......
  • vue中使用axios获取不到响应头Content-Disposition的解决办法
    项目中,后端返回的文件流,fileName是机构名称+服务器时间。前端需要拿到响应头里的Content-Disposition字段的值,从中获取文件名在控制台Headers中可以看到相关的字段和文件名,但是在axios里面却获取不到 如果想要让客户端访问到相关信息,服务器不仅要在heade里添加,还要将它们在A......
  • vue实现的前端模糊匹配搜索
    vue实现的前端模糊匹配搜索<divid="app"><divclass="wrapper"><inputtype="text"v-model="searchText"><button@click="submit">搜索</button></div><table>......
  • vue3之setup
    一、Vue3中script的三种写法Vue3新增了一个叫做组合式api的东西,英文名叫CompositionAPI。因此Vue3的script现在支持三种写法。1)最基本的Vue2写法setup()属性<scriptsetup>无论是代码行数,还是代码的精简度,<scriptsetup>的方式是最简单的形式。如果......
  • vue项目各文件说明
     总体框架:一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可。 1、build——[webpack配置]build文件主要是webpack的配置,主要启动文件是dev-server.js,当我们输入npmrundev首先启动的就是dev-server.j......