IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 复习巩固,vue中v-model的使用及实现原理 -> 正文阅读

[JavaScript知识库]复习巩固,vue中v-model的使用及实现原理

v-model的使用及实现原理


前言

本篇文章主要是复习一下,v-model的原理,包括vue2和vue3的实现原理。


一、v-model能干什么

1、v-model可以用在<input><select><textarea>和自定已组件中。
2、在表单控件或者组件上创建双向绑定。

二、用法

1、双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性。
2、用在自定已组件上。见示例
vue2版本:

//示例1:
<div id="app">
	<p>{{name}}</p>
	<input type="text" v-model="name" />
</div>
data(){
	return {
		name: ""
	}
}

//示例2:自定义组件使用v-model
//father component
<com-input v-model="inputValue"></com-input>
<div>{{inputValue}}</div>
data () {
	return {
		inputValue: ""
	}
}
//child component
<div>
	<input type="text" @input="$emit('myInput', $event.target.value)">
</div>
export default {
//可以通过model对象自定已prop的名称喝事件
  model: {
    prop: 'inputValue',//默认value
    event: 'myInput',//默认input
  },
  props: {
    myValue: String,
  }
}

vue3版本:

//示例1:
<div id="app">
	<p>{{name}}</p>
	<input type="text" v-model="name" />
</div>
data(){
	return {
		name: ""
	}
}
//示例2:
//father component
<com-input v-model:propValue="inputValue"></com-input>
<div>{{inputValue}}</div>
const inputValue = ref('')
//child component
<script>
export default {
  props: ['propValue'],
  emits: ['update:propValue']
}
</script>
<template>
  <input
    type="text"
    :value="propValue"
    @input="$emit('update:propValue', $event.target.value)"
  />
</template>

三、实现原理

如果看懂了上面自定组件的用法,那么你基本已经理解了v-model的原理是什么了。

v-model 如果将v-model “拆开来写” 就会使如下
<input type="text" :value="testValue" @input="testValue = $event.target.value">

解释:
1、定义data属性,input绑定data属性,监听input事件并赋值。
2、使用绑定数据,实现v-model

//示例:
<div>{{ testValue}}</div>
<input
  type="text"
  v-bind:value="testValue"
  @input="testValue = $event.target.value"
/>
data() {
  return {
    testValue: "",
  };
}
//示例:
//当组件使用的时候
<com-input
  :propValue="inputValue "
  @update:propValue="newValue => inputValue = newValue"
/>

总结

这次复习又学习到不少忘记的东西,如有问题欢迎指正,互相学习。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:24:08  更:2022-10-17 12:26:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 15:05:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码