当前位置:网站首页>v-model的原理
v-model的原理
2022-07-31 10:24:00 【yibucuo】
v-model绑定input框
v-model 本质上不过是语法糖,可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。
v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:
text 和 textarea 元素使用 value 属性和 input 事件;
checkbox 和 radio 使用 checked 属性和 change 事件;
select 字段将 value 作为 prop 并将 change 作为事件。
<input v-model="searchText">
<input v-bind:value="searchText" v-on:input="searchText = $event.target.value" >
<!-- 自html5开始,input每次输入都会触发oninput事件, 所以输入时input的内容会绑定到searchText中,于是searchText的值就被改变; $event 指代当前触发的事件对象; $event.target 指代当前触发的事件对象的dom; $event.target.value 就是当前dom的value值; 在@input方法中,value => searchText; 在:value中,searchText => value; -->
v-model绑定input组件
v-model绑定一个value值,且自定义一个input事件v-on:input=“searchText = $event.target.value”
<KInput v-model="userInfo.username" placeholder="请输入用户名"></KInput>
组件内部,接受到value值,在用户触发input自带的input事件后,于是触发onInput,进一步this.$emit(‘input’),这样就触发了上面绑定的input事件,执行了searchText = $event.target.value
<template>
<div>
<input :type="type" :value="value" @input="onInput">
</div>
</template>
<script> export default {
props: {
value: {
type: String, default: '' }, type: {
type: String, default: 'text' } }, methods: {
onInput(e) {
// 这里就是v-model的原理,派发一个input事件即可 this.$emit('input', e.target.value) } }, } </script>
边栏推荐
- win10镜像下载
- Burndown chart of project management tools: Dynamic assessment of team work ability
- Meikle Studio--Hongmeng 14-day development training notes (8)
- 迪拜的超市---线段树双重懒标记+二分
- 可以用聚酯树脂将接线板密封接线盒吗?(接线盒灌封胶用哪种树脂)
- LeetCode二叉树系列——101.对称二叉树
- Day113.尚医通:用户认证、阿里云OSS、就诊人管理
- Source code analysis of GZIPInputStream class
- NowCoderTOP28-34二叉树——持续更新ing
- 浓眉大眼的谷歌 Chrome 也叛变了,教你一招快速清除其自带广告
猜你喜欢
Three ways of single sign-on
如何优雅的停止一个线程?
透过开发抽奖小程序,体会创新与迭代
WEB核心【记录网站登录人数,记录用户名案例】Cookie技术实现
In half a month, MySQL has been consolidated again, and a tens of thousands of words "super hard core" article has been sorted out!
Day113.尚医通:用户认证、阿里云OSS、就诊人管理
第七章
尚医通【预约挂号系统】总结
Open Kylin openKylin automation developer platform officially released
NowCoderTOP28-34二叉树——持续更新ing
随机推荐
KVM虚拟化作业
Gradle series - Groovy overview, basic use (based on Groovy document 4.0.4) day2-1
sql力扣刷题六
【LeetCode】242. 有效的字母异位词
单点登录原理及实现方式
NowCoderTOP23-27 Binary tree traversal - continuous update ing
Burndown chart of project management tools: Dynamic assessment of team work ability
Source code analysis of GZIPInputStream class
一种用于保证多方子系统数据一致性的方法
Web系统常见安全漏洞介绍及解决方案-XSS攻击
nodeJs--url模块
web安全入门-黑苹果MAC系统安装
(C语言)程序环境和预处理
Meikle Studio--Hongmeng 14-day development training notes (8)
SQLServer2019安装(Windows)
Redis Cluster - Sentinel Mode Principle (Sentinel)
SQLSERVER merges subquery data into one field
csdn文件导出为pdf
医院管理系统数据库,课程设计,SQLserver,纯代码设计
Business-(Course-Chapter-Subsection) + Course Publishing Some Business Ideas